我正在尝试使用G ++和使用Clang的OSX上的C ++编译编写单个CMakeLists.txt文件。
我想将目标库标记-Wl,--start-group
和-Wl,--end-group
与G ++一起使用,但在与Clang链接时会出现错误:ld: unknown option: --start-group
我能找到的唯一结果就是选择在Mac副本上删除这些标志,但这不允许从linux到OSX的简单项目迁移。我尝试将这些语句设置为CMAKE条件,但这些语句被视为未找到的文字库:
例如:$<IF($<NOT:APPLE>)> -Wl,--start-group $<ENDIF($<NOT:APPLE>)>
生成:c++: error: $<IF: No such file or directory
有没有办法在CMAKE TARGET_LINK_LIBRARIES字段中有条件地进行修改?
答案 0 :(得分:0)
我试试这个:
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(START_GROUP "-Wl,--start-group")
set(END_GROUP "-Wl,--end-group")
else()
set(START_GROUP "")
set(END_GROUP "")
endif()
然后只需用$ {START_GROUP}和$ {END_GROUP}替换这些选项,它们只会与GNU编译器一起使用。
如果真正重要的编译器,请不要基于平台进行切换。否则,Linux上的Clang用户将无法构建您的项目。