1

我有一些正在 CMake 中编译的大型项目。它已经开发了很长时间,有 8000 多个源/头文件(超过 500Mbytes,超过 500 个 CMakefile.txt 文件)。

他们使用这样的目录结构

PROJECT_NAME
  src
    / subdir_name
    / other_dir_name
    / some_different_dir
    / MY_SPECIFIC_DIR             <---
    / yet_another_dir
   build

并在外部构建它,如下所示:

name@host:~/PROJECT_NAME/build> cmake ../src
name@host:~/PROJECT_NAME/build> make all

然后将其构建为一个 BIG 二进制文件(细节不重要)。


我不能触及其他任何东西,只是MY_SPECIFIC_DIR它的源代码和 CMake 文件的内容。因此,我以某种方式MY_SPECIFIC_DIR 在调整 CMakefile.txt 文件 中有源代码,并希望像这样构建它:

name@host:~/PROJECT_NAME/build_specific> cmake ../src/MY_SPECIFIC_DIR
name@host:~/PROJECT_NAME/build_specific> make all

这应该将东西构建MY_SPECIFIC_DIR到单个二进制文件中,并带有一些到其他子项目的链接。但也(显然)不要改变整个项目的编译方式。

我的问题是:

是否可以使用CMake 进行所需的设置
我可以以某种方式测试CMakeFile.txt它是根项目并以与整体构建时不同的方式构建它吗?


除非,我必须诉诸不同的手段并make为此使用标准。我不知道 CMake,所以我希望是/否anwer,甚至对于如何实现这一点的技术也更可取。然后学习CMake并做到这一点。

另外,我必须使用 CMake 2.6 版。

谢谢

4

1 回答 1

2

基本概念是使用

if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
   ... code for stand-alone app
else()
   ... what was in this file before
endif()
于 2012-09-25T22:45:46.650 回答