【问题标题】:Cmake Custom target that runs only onceCmake自定义目标只运行一次
【发布时间】:2017-09-27 17:40:41
【问题描述】:

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

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

但在这种情况下,我需要为 .fidl 文件指定规则

我怎么能做这样的事情?

【问题讨论】:

    标签: c++ build cmake code-generation


    【解决方案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

    【讨论】:

      【解决方案2】:

      一般答案如下: 如果您不知道生成了哪些文件,则应使用 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})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多