2017-04-24 6 views
0

libcurl, libssl, uuid libs를 정적으로 링크하는 방법은 무엇입니까? <code>cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTING=OFF -DBUILD_ONLY="s3" -DFORCE_SHARED_CRT=OFF -DBUILD_SHARED_LIBS=OFF <aws-sdk-src></code> 항상 공유 libcurl에 대한 링크는 (절단) CMAKE 출력에서 ​​볼 수있는 SSL 라이브러리 :이 명령을 실행

-- 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 

내가 대신, libcurl.a을 libz.a을 연결하는 강제 할 수 있습니까?

답변

0

라이브러리는 주로 find_library 명령으로 검색되므로 확장자에 영향을주는 변수는 CMAKE_FIND_LIBRARY_SUFFIXES으로 설정할 수 있습니다.

-DCMAKE_FIND_LIBRARY_SUFFIXES=.a 

와 함께 하나의 확장자를 지정하여 당신은 에서만 검색 정적 라이브러리에 강제로. 공유 사람 (.so)를 통해 정적 라이브러리 (.a)를 선호에

"-DCMAKE_FIND_LIBRARY_SUFFIXES=.a;.so" 

와 여러 확장을 지정하여 당신은 CMake를 말한다.

+0

시도했지만 -DCMAKE_FIND_LIBRARY_SUFFIXES, 작동하지 않습니다. 여전히 공유 라이브러리에 연결됩니다. 오류 없음. 정적 라이브러리가 공유 라이브러리 바로 옆에 있는지 확인했습니다. – cosmosb

+0

'cmake'를 다시 실행하기 전에 캐시를 지우셨습니까? – Tsyvarev

+0

예. 내가 깨끗하게 시작했는지 확인했다. 기본적으로 -DCMAKE_FIND_LIBRARY_SUFFIXES 옵션을 사용하여 명령을 실행하기 전에 모든 CMake 생성 파일을 삭제합니다. – cosmosb