避免重建未选定和已还原的cmake子目录

zf9nrax1  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(150)

我有一个CMake项目,它有多个目标,这些目标是通过add_subdirectory添加的,并且add_subdirectory调用是由选项保护的。使用Ninja作为构建运行程序。
现在,当我关闭某个特定的选项并重新配置时,现在丢失的子目录的所有目标文件显然都无效了。当我重新打开该选项时,add_subdirectory再次运行,但它希望从头开始重新编译所有内容
显然,ccache在这里有很大帮助,因为输入和输出完全相同。但是复制对象仍然比什么都不复制要慢得多,而且链接器运行时是最重要的。
有没有办法告诉cmake:如果子目录没有了,请暂时考虑一下,并保持文件和它们的信息有效,只是不使用它们?

j0pj023g

j0pj023g1#

如果子目录没有了,请暂时考虑一下,并保持文件和它们的信息有效,只是不使用它们?
正是,所以不要使用,不要修改add_subdirectory,将项目的依赖改为不依赖子目录导出的目标。

add_subdirectory(A EXCLUDE_FROM_ALL)
if(option)
   target_link_libraries(your_super_target A)
endif()

相关问题