假设我有一个cmake宏,它根据某些条件添加目标(库或可执行文件)
macro (conditionally_add target_name target_src condition)
if (condition)
add_library (target_name target_src)
endif ()
endmacro()
我的问题是,在调用此函数后
conditionally_add (mylib mysrc.cc ${some_condition})
如何检查是否已添加库?更具体地说,我想在下面做一些事情
if (my_lib_is_added) # HOW TO DO THIS?
# Do something.
endif ()
答案 0 :(得分:20)
使用TARGET
命令的if
子句:
conditionally_add (mylib mysrc.cc ${some_condition})
if (TARGET mylib)
# Do something.
endif()
答案 1 :(得分:0)
看起来,仍然没有办法迭代CMake中的目标,所以你需要自己做。
您需要创建add_executable()
和add_library()
函数的自定义变体,这样做会像
function(my_add_executable TARGET)
list(APPEND MY_TARGETS ${TARGET})
add_executable(${TARGET} ${ARGN}
endfunction()function(my_add_executable TARGET)