我是CMake的新手,正在尝试学习将其用于简单的项目。如果我有一个看起来像这样的CMakeLists.txt文件:
add_executable(alpha alpha.cpp)
add_executable(beta beta.cpp)
add_library(one STATIC one.cpp)
add_library(two STATIC two.cpp)
target_link_libraries(alpha one)
target_link_libraries(alpha two)
target_link_libraries(beta one)
target_link_libraries(beta two)
有没有一种方法可以简化这种模式?我想要的是定义类似all_libraries
的东西,其中既包含one
也包含two
,然后每个二进制文件只需链接一次。有办法吗?
答案 0 :(得分:3)
您可以使用接口库:
add_library(all_libraries INTERFACE)
target_link_libraries(all_libraries
INTERFACE
one
two
)
... then later ...
target_link_libaries(alpha PUBLIC all_libraries)
您可以使用变量:
set(all_libraries one two)
.. then later ..
target_link_libraries(alpha PUBLIC ${all_libraries})
注意: