我正在将一个项目移植到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