0

已经链接了 4 个库,如果 FLAG 为 ON,则希望链接一个新库。

target_link_libraries (lib1 lib2 lib3 lib4 ${CMAKE_DL_LIBS})

我希望它像

target_link_libraries (lib1 lib2 lib3 lib4 if(FLAG) lib5 endif() ${CMAKE_DL_LIBS})

反正有没有在 cmakelists.txt 中实现这个?

4

1 回答 1

0

只需使用多个target_link_library命令。

例如,以下可用于为 unix 目标添加库

target_link_libraries (lib1 lib2 lib3 lib4 ${CMAKE_DL_LIBS})

if(UNIX)
    target_link_libraries(lib1 lib5)
endif()

或者,您可以使用包含要包含的库的列表

set(LIBS lib2 lib3 lib4 ${CMAKE_DL_LIBS})

if(UNIX)
    list(APPEND LIBS lib5)
endif()

target_link_libraries(lib1 ${LIBS})

从理论上讲,您也可以使用生成器表达式,但恕我直言,这将成为可读性最低的替代方案

target_link_libraries(lib1 lib2 lib3 lib4 ${CMAKE_DL_LIBS} $<$<BOOL:${UNIX}>:lib5>)
于 2020-12-10T19:15:41.743 回答