【发布时间】:2025-12-08 10:35:01
【问题描述】:
在具有多个目标的 CMake 项目中,我经常发现自己一遍又一遍地重复一些代码。看这个例子:
cmake_minimum_required(VERSION 3.12)
project(rapid_benchmark)
set(CMAKE_CXX_STANDARD 17)
add_executable(benchmark main.cpp)
add_executable(benchmark_parallel main.cpp) # enable parallel processing
add_executable(benchmark_openmp main.cpp) # enable openmp
add_executable(benchmark_static main.cpp) # enable static optimizations
# ... more targets
# Adding basic dependecies
find_package(abc)
if(abc_FOUND)
target_link_libraries(benchmark abc::abc)
target_link_libraries(benchmark_parallel abc::abc)
target_link_libraries(benchmark_openmp abc::abc)
# ... all other targets ...
# The same for the includes etc.
find_package(xyz)
if(xyz_FOUND)
target_link_libraries(benchmark xyz::xyz)
# ... all other targets ...
这很烦人且容易出错,尤其是在添加新目标时。
如何避免 CMake 项目中包含多个目标的重复代码?
例如,有没有办法将目标放入某种列表并在该列表上调用target_link_libraries?
【问题讨论】: