我正在使用CMake 3.8.2(随JetBrains CLion一起提供)并链接自定义项目的几个静态库。
由于我需要保留静态符号(遗留),我将自己的程序部分包含在target_link_libraries(${TARGET} -Wl,--whole-archive ${MY_LIBRARY} -Wl,--no-whole-archive)
中。
这在大多数情况下都有效,但在某些时候,链接器命令将是这样的:
/usr/bin/c++ -g CMakeFiles/my_exe.dir/my_exe.cpp.o -o my_exe libmy_other_lib.a -Wl,--whole-archive -Wl,--no-whole-archive
这是没用的,因为事先添加了库,然后发生了-Wl,--whole-archive -Wl,--no-whole-archive
。
请注意,我需要在链接 my_other_lib.a 之后添加-Wl,--no-whole-archive
之类的内容,因为我不想将此选项用于外部依赖项。
有没有这个?
答案 0 :(得分:0)
尝试将这些标志作为单个参数传递给target_link_libraries
,而不是作为列表:
target_link_libraries(${TARGET} "-Wl,--whole-archive ${MY_LIBRARY} -Wl,--no-whole-archive")