2017-04-24 99 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