【问题标题】:CMake: Linking multiple libraries to two executables in one commandCMake:在一个命令中将多个库链接到两个可执行文件
【发布时间】:2013-02-12 11:03:35
【问题描述】:

我有两个可执行文件都需要链接到 N 个相同的库:

add_executable(MyExe1 main1.cpp)
add_executable(MyExe2 main2.cpp)

target_link_libraries(MyExe1 lib1 lib2 lib3 ... libN)
target_link_libraries(MyExe2 lib1 lib2 lib3 ... libN)

所以我必须写两次target_link_libraries;一次用于MyExe1,一次用于MyExe2。有什么办法可以缩短一些常用库链接到两个不同可执行文件的方式?我想知道是否可以在一个命令中将 lib1 ... libN 库链接到 MyExe1MyExe2 以避免冗余并使 CMake 文件更干净。

【问题讨论】:

    标签: cmake


    【解决方案1】:

    您可以使用set 命令从参数列表中设置变量:

    add_executable(MyExe1 main1.cpp)
    add_executable(MyExe2 main2.cpp)
    
    set(LIBS lib1 lib2 lib3 ... libN)
    
    target_link_libraries(MyExe1 ${LIBS})
    target_link_libraries(MyExe2 ${LIBS})
    

    【讨论】:

    • 有没有办法创建一个 cmake 伪库,让您可以定义 lib1AndLib2,以便您可以在“target_link_libraries(MyExe1 lib1AndLib2)”之类的东西中使用它?
    • @JamesMoore 是的,它被称为interface library,您使用add_library(MyInterfaceLibName INTERFACE) 创建它。
    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多