2016-08-28 83 views
3

我正在嘗試創建一個指定爲-fPIC的靜態庫。如何配置CMake以使用-fPIC構建庫?

add_library(cpp-netlib_pic 
    STATIC 
    ${SRCS}) 
set_property(TARGET cpp-netlib_pic PROPERTY POSITION_INDEPENDENT_CODE) 

這是行不通的。

庫(cpp-netlib_pic)內置了-fPIC標誌。

這對 cpp-netlib_pic 鏈接

其他目標做然而,有-fPIC加入到自己的編譯器標誌,但由於cpp-netlib_pic沒有鏈接失敗。

這裏foo將有-fPIC補充說:

add_library(foo 
    SHARED 
    ${SRCS}) 
target_link_libraries(foo cpp-netlib_pic) 

我已經證明了這一點給自己用make VERBOSE = 1

[ 87%] Building CXX object third_party/cpp-netlib/CMakeFiles/cpp-netlib_pic.dir/src/server_request_parsers_impl.cpp.o 
/usr/bin/c++ ... -std=c++14 -Werror -Wall -Wextra ... \ 
    -o CMakeFiles/cpp-netlib_pic.dir/src/server_request_parsers_impl.cpp.o \ 
    -c .../third_party/cpp-netlib/src/server_request_parsers_impl.cpp 

注意沒有-fPIC這裏。

在構建目標foo它採用cpp-netlib_pic-fPIC出現:

[ 93%] Building CXX object foo.cc.o 
/usr/bin/c++ ... -std=c++14 -Werror -Wall -Wextra ... -fPIC ... \ 
    -o CMakeFiles/foo_shared_lib.dir/foo.cc.o \ 
    -c .../foo/foo.cc 

如何配置CMake的與-fPIC建立第一個庫(cpp-netlib_pic)?

回答

6

你似乎已經忘記了ON

set_property(TARGET cpp-netlib_pic PROPERTY POSITION_INDEPENDENT_CODE ON) 
+0

Waaaaht?謝謝!我不知道我是如何錯過的! –