如何使用cmake解析整个项目,但只构建依赖于其他子文件夹的子文件夹



我正在将一个项目移植到linux和cmake。它是一个巨大项目的一部分,每个子项目都在一个文件夹中。我只想构建我的项目及其依赖项。

我可以从CMakeList.txt主文件中评论其他项目,但这不起作用,因为有一些对其他项目的依赖关系(也可能依赖于其他项目…(

我不想修改其他项目中的所有cmake文件,只构建我需要的小部分,因为这很容易出错,而且很耗时。例如,我可能会错误地签入一些本不该签入的东西。

我的主要问题是其他项目持续中断(几乎其他人都只是在windows中工作,所以linux构建没有得到很好的处理(,这让我的速度慢了很多。

我的问题是:有没有办法告诉cmake:运行所有项目,但只编译编译某个子文件夹所需的内容?

你可以做:

add_subdirectory(dir EXCLUDE_FROM_ALL)

然后默认情况下,该子目录(和递归(中的所有目标都标记为EXCLUDE_FROM_ALL,这样默认情况下就不会构建它们。

您还可以指定要构建的特定目标:

cmake --build the_build_dir --target this_target -t another_target

最新更新