2017-04-24 264 views
0

运行此命令:cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTING=OFF -DBUILD_ONLY="s3" -DFORCE_SHARED_CRT=OFF -DBUILD_SHARED_LIBS=OFF <aws-sdk-src>能连到共享的libcurl,SSL库,你可以从(截)CMake的输出看到:如何静态链接libcurl,libssl,uuid库?

-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 
-- Zlib include directory: /usr/include 
-- Zlib library: /usr/lib/x86_64-linux-gnu/libz.so 
-- Encryption: Openssl 
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g") 
-- Openssl include directory: /usr/include 
-- Openssl library: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so 
-- Http client: Curl 
-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.47.0") 
-- Curl include directory: /usr/include 
-- Curl library: /usr/lib/x86_64-linux-gnu/libcurl.so 
-- Considering s3 

我怎么能强迫它,而不是链接libz.a,libcurl.a?

回答

0

由于库主要通过find_library命令进行搜索,因此您可以设置变量CMAKE_FIND_LIBRARY_SUFFIXES,以便对搜索的扩展名产生影响。

通过与

-DCMAKE_FIND_LIBRARY_SUFFIXES=.a 

指定单个扩展你将强制搜索仅静态库。

通过与

"-DCMAKE_FIND_LIBRARY_SUFFIXES=.a;.so" 

指定的几个扩展你告诉CMake的到喜欢静态库(.a)在共享者(.so)。

+0

尝试了-DCMAKE_FIND_LIBRARY_SUFFIXES,但它不起作用。它仍然链接到共享库。没有错误。我验证了静态库存在于共享库旁边。 – cosmosb

+0

您是否在重新运行cmake之前清除了缓存? – Tsyvarev

+0

是的。我确定我开始干净。在使用-DCMAKE_FIND_LIBRARY_SUFFIXES选项运行命令之前,基本上删除了所有CMake生成的文件。 – cosmosb