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

标签 c++ include cmake qmake

问候:

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

  • trunk/A/CMakeList.txt
  • trunk/B/CMakeLists.txt

分别生成文件 A.soB.so。出于实际原因,我想将项目 AB 分开,但我还想有一个 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 包含文件所做的事情?

提前致谢!

最佳答案

您需要使用ADD_SUBDIRECTORY:

PROJECT(TEST)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

ADD_SUBDIRECTORY( A ) 
ADD_SUBDIRECTORY( B )

关于c++ - 在同一个 CMakeList 文件中导入两个不同的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28041836/

相关文章:

unit-testing - CMake 和 CTest 的默认 "test"命令会跳过特别命名的测试

c++ - 如何在 Windows 上从命令行运行 clang?

c++ - 为什么使用 rand() 被认为是不好的?

c++ - 如何在我的 "include path"中放入一些东西?

python - 使用 distutils python 构建时如何合并 cmake 文件?

c++ - 链接自注册的抽象工厂

C++ 类型特征提取模板参数的特化值

c++ - 使用带有 std::optional 参数的 std::function 重载歧义

java - 我可以将导入放入单独的文件中吗?

linux - 为 busybox 构建选择正确的内核头文件