运行此命令: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输出中看到:
-- 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 :(得分:0)
由于主要通过find_library命令搜索库,您可以设置变量CMAKE_FIND_LIBRARY_SUFFIXES以影响搜索的扩展名。
通过
指定单个扩展名-DCMAKE_FIND_LIBRARY_SUFFIXES=.a
您将强制仅搜索静态库。
通过
指定多个扩展名"-DCMAKE_FIND_LIBRARY_SUFFIXES=.a;.so"
你告诉CMake 偏好静态库(.a
)而不是共享的(.so
)。