当且仅当文件被调用且不存在时才触发CMake自定义命令

时间:2016-02-22 13:48:25

标签: cmake

基本上我想要实现的是在库和自定义命令之间具有依赖关系,以便在调用SRC文件时生成SRC(例如,要编译)。但是如果它们之后被调用并且已经生成,我不会我想再次触发Gen目标。这就是我所拥有的,但是它没有找到SRC文件,这是真的,因为它们还没有生成!

add_custom_command(
    TARGET Gen
    COMMAND gen ${FILES} -o SRC
    )

add_library(OBJS OBJECT ${SRC})

add_dependencies(OBJS Gen)

1 个答案:

答案 0 :(得分:2)

为此,您需要:

  • 添加自定义命令以生成文件
  • 添加依赖于此/那些文件的自定义目标
  • 然后在您的库和此新目标之间添加依赖项。

这样的事情:

add_custom_command(
    OUTPUT ${SRC}
    COMMAND gen ${FILES} -o ${SRC})

add_custom_target(GENSRC
    DEPENDS ${SRC})

add_library(OBJS OBJECT ${SRC})

add_dependencies(OBJS GENSRC)