CMake target_link_libraries不保留顺序

时间:2017-09-07 15:00:45

标签: c++ cmake linker g++ clang++

我正在使用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之类的内容,因为我不想将此选项用于外部依赖项。

有没有这个?

1 个答案:

答案 0 :(得分:0)

尝试将这些标志作为单个参数传递给target_link_libraries,而不是作为列表:

target_link_libraries(${TARGET} "-Wl,--whole-archive ${MY_LIBRARY} -Wl,--no-whole-archive")