【发布时间】:2018-02-16 09:13:13
【问题描述】:
我正在使用 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 的内容,因为我不想将此选项用于外部依赖项。
对此有什么想法吗?
【问题讨论】:
-
看起来像一个错误。当我阅读有关此的文档时,它声称以
-开头的库名称将保留它们的相对顺序。另一个想法 - 在你走到这一步之前,是否有其他依赖目标在同一个库中拉取?
标签: c++ cmake linker g++ clang++