CMake基本项目设置

时间:2010-12-27 01:59:55

标签: c++ cmake setup-project

我是CMake和重新学习C ++的新手,所以我希望这些是适当的问题。我在目录/ projects / A中有一个项目,在/ projects / include / open-source-project-1中有一些项目所依赖的.h文件。

Sample Hierarchy:
/projects
  /CMakeLists.txt
  /A
    /CMakeLists.txt
    /a.cpp
  /B
    /CMakeLists.txt
  /include
    /open-source-project-1
      /includeMe.h
    /open-source-project-2
  1. 我是否需要使用cmake include_directories()命令?如果是这样,我需要将CMakeLists.txt文件放入什么? (我尝试了很多变化)
  2. 我需要一个不同的cmake命令吗?
  3. 如果我把它放在最高级别的CMakeLists.txt中,是否应该在A项目或B项目的.cpp文件中处理#include的所有事件?
  4. 这是c ++项目的典型设置吗?它看起来合乎逻辑吗?

1 个答案:

答案 0 :(得分:3)

您的顶级CMakeLists.txt文件,除非所有项目都以某种方式直接相互关联或具有其他无法解析的依赖项。 不相关的项目不应该相互包含,也不他们需要父列表文件。

  1. 如果A和B是单独的项目,./A/CMakeLists.txt./B/CMakeLists.txt应至少包含以下行:

    include_directories(../include)
    

    否则,如果A和B是较大单个项目的部分,那么将这些行放在顶级CMakeLists.txt文件中是合适的:

    include_directories(include)
    add_subdirectory(A)
    add_subdirectory(B)
    
  2. 仅适用于单独的项目。一次调用cmake将创建一个构建树。您只需要构建树的一个项目。

  3. 否。仅当顶级列表文件包含add_subdirectory指令时,才会影响其他列表文件。
  4. 不,这是非典型的。