我有一个CMake项目,其中包含许多子项目。每个子项目都可以使用我提供的函数(通过调用add_custom_command)生成包含某些特定信息的小型文本文件。在最后一步,我希望将所有这些文件组合成一个大的文本文件。
我创建了一个自定义命令来搜索创建的文件(全部在一个位置)并将它们合并。问题是,我希望此最终步骤依赖于在子项目中完成的所有小步骤,但我实际上不知道将提供多少个文件。
我的最终命令如下:
我创建了一个自定义命令来搜索创建的文件(全部在一个位置)并将它们合并。问题是,我希望此最终步骤依赖于在子项目中完成的所有小步骤,但我实际上不知道将提供多少个文件。
我的最终命令如下:
add_custom_command(OUTPUT combination.txt
COMMAND create combination.txt from all files from /path/)
我的“为每个子项目创建小文本文件”的命令如下:
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})
但这是我最不想做的事情。