2014-12-07 34 views
3

假设我有一个基于一定的条件如何检查目标是否已添加?

macro (conditionally_add target_name target_src condition) 
    if (condition) 
    add_library (target_name target_src) 
    endif() 
endmacro() 

我的问题是CMake的宏,增加了目标(库或可执行文件),调用此函数

conditionally_add (mylib mysrc.cc ${some_condition}) 

后如何检查库中是否有被添加?更具体地讲,我愿意做以下

if (my_lib_is_added) # HOW TO DO THIS? 
    # Do something. 
endif() 

回答

11

使用TARGET子句if命令:

conditionally_add (mylib mysrc.cc ${some_condition}) 
if (TARGET mylib) 
    # Do something. 
endif() 
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) 
相关问题