2014-12-07 4 views
3

Предположим, у меня есть 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() 

ответ

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) 
Смежные вопросы