在同一个CMakeList文件中导入两个不同的项目

时间:2015-01-20 09:32:21

标签: c++ include cmake qmake

问候:

我有两个不同的C ++项目,每个项目都有自己的 CMakeList.txt 文件,该文件生成 .so 库文件。例如。两个项目都在路径 trunk / A trunk / B 下,它们包含文件:

  • 躯干/ A / CMakeList.txt
  • 躯干/ B /的CMakeLists.txt

分别生成文件 A.so B.so 。出于实际原因,我希望将两个项目 A B 分开,但我还希望有一个 CMakeList.txt 文件(例如 trunk / CMakeList.txt )可以同时编译两个二进制文件。

我希望通过在 .pro 文件中包含 .pri 文件来复制类似于 qmake 可以实现的内容。因此,我尝试将 CMakeList 文件与 trunk / CMakeList.txt 的以下代码包括在内:

PROJECT(TEST)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

include(A/CMakeLists.txt)
include(B/CMakeLists.txt)

但是CMake不会那样工作。包含的 CMakeList 文件中的内容将从 trunk 目录中进行评估。例如,通过阅读 trunk / A / CMakeList.txt 中的以下行:

FILE(GLOB HEADERS *.h)

CMake只会在 / trunk 中查找* .h文件,而不是 / trunk / A

在CMake中有没有正确的方法呢?类似于QMake使用.pri包含文件的东西?

提前致谢了!

1 个答案:

答案 0 :(得分:2)

您需要使用ADD_SUBDIRECTORY

PROJECT(TEST)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

ADD_SUBDIRECTORY( A ) 
ADD_SUBDIRECTORY( B )