仅运行一次的 Cmake 自定义目标
Cmake Custom target that runs only once
我需要以某种方式根据 .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_successfully)。
有没有更好的解决方案而不创建无用的文件 fidl_generated_successfully
一般答案如下:
如果您不知道生成了哪些文件,您应该像 Denis Kotov 建议的那样使用 "fake" 文件的方法。
否则这样的更好:
# 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})
我需要以某种方式根据 .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_successfully)。 有没有更好的解决方案而不创建无用的文件 fidl_generated_successfully
一般答案如下: 如果您不知道生成了哪些文件,您应该像 Denis Kotov 建议的那样使用 "fake" 文件的方法。 否则这样的更好:
# 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})