仅运行一次的Cmake Custom目标

时间:2017-04-29 19:56:41

标签: c++ build cmake code-generation

我需要以某种方式根据.fidl.cpp文件生成.hpp个文件。 问题是,如果我尝试使用add_custom_target,它每次都会运行。 对于add_custom_command,我需要指定输出文件,但我不想这样做。 我想做这样的事情:

add_custom_command(gen_fidl
                   DEPENDS "*.fidl"
                   COMMAND <My Commands>)

但在这种情况下,我需要为.fidl个文件

指定一个规则

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我找到了以下解决方案:

add_custom_command(
        OUTPUT fidl_generated_successfully
        DEPENDS ./cmake-build-debug/*.fidl
        COMMAND touch fidl_generated_successfully
        COMMAND <COMMAND TO DO>)

add_custom_target(
        fidl_gen
        DEPENDS fidl_generated_successfully)

add_dependencies(${PROJECT_NAME} fidl_gen)

但问题是文件上的生成( fidl_generated_successfully )。 有没有更好的解决方案,没有创建无用的文件 fidl_generated_successfully

答案 1 :(得分:1)

一般答案如下: 如果您不知道生成了哪些文件,则应使用&#34; fake&#34;文件像Denis Kotov建议的那样。 否则这样的事情会更好:

# definition of fidl_list
add_custom_command( OUTPUT ${fidl_list}
    DEPENDS ${input_files_or_folders_for_generation}
    COMMAND <command_to_do> )

add_custom_target(fidl_gen DEPENDS ${fidl_list})