2014-12-07 32 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) 
相關問題