首页 > 解决方案 > 如何保留 CMake 生成的文件?

问题描述

add_custom_command()用来生成一些文件。ninja clean删除它们,因为它应该。其中一个文件旨在作为默认/示例实现,由用户修改。只有在它不存在时才会生成它。我不想ninja clean删除这个文件。

我尝试了很多事情但没有成功:

我之前生成了示例实现,只是让用户复制它或在上面建模他们的代码。这有效,但并不完全令人满意。我的用例是否不太可能 CMake 不支持它?

标签: cmake

解决方案


恐怕您的要求(从概念上讲,已经make创建了make clean不会删除的东西)相当不寻常的。我可以想到两种潜在的解决方案/解决方法。

、将文件的生成移到CMake的时候。也就是说,使用execute_process()而不是创建它add_custom_command()。这可能会也可能不会,这取决于文件生成过程(当前的自定义命令)是否依赖于构建的其余部分。

,从 CMake 中完全隐藏示例文件的存在。也就是说,让自定义命令也生成一些其他文件(可能只是一个时间戳文件),并让它的驱动自定义目标依赖于那个文件。不要将示例文件列为自定义命令的依赖项、输出或副产品。这样,什么都不会依赖它,CMake 和 Ninja 都不应该关心它是否存在,所以他们不会抱怨或尝试清理它。


推荐阅读