我有一些在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版。
由于
答案 0 :(得分:2)
基本概念是使用
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
... code for stand-alone app
else()
... what was in this file before
endif()