我有一个包含许多子项目的 CMake 项目。他们每个人都可以使用我提供的函数来生成一个包含某些特定信息的小文本文件(通过调用 add_custom_command)。在最后一步,我想将所有这些文件合并到一个大文本文件中。
我创建了一个自定义命令,它搜索创建的文件(都在一个地方)并合并它们。
问题是我想让这最后一步取决于子项目中的所有小步骤,而我实际上并不知道将提供多少文件。
我的最终命令如下所示:
add_custom_command(OUTPUT combination.txt
COMMAND create combination.txt from all files from /path/)
我的 create-small-text-file-for-each-subproject 命令看起来像:
add_custom_command(OUTPUT /path/${sub_project_name}.txt
COMMAND create /path/${sub_project_name}.txt)
当我创建这些小文件时,我想做一些事情,比如让“combination.txt”依赖于 /path/${sub_project_name}.txt
所以我希望我可以:
add_dependency(combination.txt /path/${sub_project_name}.txt)
但是,这只适用于目标。
我也尝试过将 set_source_files_properties 与 OBJECT_DEPENDS 一起使用,但它似乎不起作用(也许它打算与 add_target 的 cpp 文件一起使用?)
我看到的最后一种让它工作的方法是使用一个缓存变量,它会累积所有这些小文件路径,然后像这样使用它:
add_custom_command(OUTPUT combination.txt
COMMAND create combination.txt from all files from /path/
DEPENDS ${all_small_files_list})
但这是我想做的最后一件事。