CMAKE自定义目标仅运行一次

Cmake Custom target that runs only once

本文关键字:一次 运行 自定义 目标 CMAKE      更新时间:2023-10-16

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

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

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

我将如何做这样的事情?

我找到了以下解决方案:

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_succescescesly (。是否可以在任何地方更好的解决方案而不创建无用的文件 fidl_generated_succescescescesly

一般答案如下:如果您不知道生成了哪些文件,则应将方法与丹尼斯·科托夫(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})