【问题标题】:Importing two different projects in the same CMakeList file在同一个 CMakeList 文件中导入两个不同的项目
【发布时间】:2015-03-18 11:22:51
【问题描述】:

问候:

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

  • trunk/A/CMakeList.txt
  • trunk/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 包含文件所做的事情?

提前百分感谢!

【问题讨论】:

    标签: c++ include cmake qmake


    【解决方案1】:

    你需要使用ADD_SUBDIRECTORY:

    PROJECT(TEST)
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
    
    ADD_SUBDIRECTORY( A ) 
    ADD_SUBDIRECTORY( B )
    

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多