如何配置CMake以使用-fPIC构建库?

6

我正在尝试使用-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

当构建使用cpp-netlib_pic的目标foo时,会出现-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)?
1个回答

11

你似乎忘记了 ON

set_property(TARGET cpp-netlib_pic PROPERTY POSITION_INDEPENDENT_CODE ON)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接