如何检查目标是否已添加?

时间:2014-12-07 03:38:09

标签: cmake

假设我有一个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 ()

2 个答案:

答案 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)