CMake:在一个命令中将多个库链接到两个可执行文件

Mey*_*sam 7 cmake

我有两个可执行文件,它们都需要链接到相同的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)
Run Code Online (Sandbox Code Playgroud)

所以我要写target_link_libraries两次; 一次为MyExe1一次,为一次MyExe2.有没有办法缩短一些公共库链接到两个不同的可执行文件的方式?我想知道是否可以将lib1... libN库链接到两个MyExe1MyExe2在一个命令中以避免冗余并使CMake文件更清晰.

Osk*_* N. 9

您可以使用该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})
Run Code Online (Sandbox Code Playgroud)

  • @JamesMoore是的,它被称为[接口库](https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#interface-libraries),你用`创建它add_library(MyInterfaceLibName 接口)`。 (2认同)