CMake可以构建子项目(带有好处)吗?

时间:2012-09-25 20:30:26

标签: makefile cmake project-structure

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

他们使用像这样的目录结构

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

并将其构建为out-source,如下所示:

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中以某种方式测试它是root项目并以不同的方式构建它,然后将它作为一个整体构建吗?


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

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

由于

1 个答案:

答案 0 :(得分:2)

基本概念是使用

if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
   ... code for stand-alone app
else()
   ... what was in this file before
endif()