【问题标题】:CMake basic project setupCMake 基本项目设置
【发布时间】:2010-12-27 01:59:54
【问题描述】:

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

样本层次结构: /项目 /CMakeLists.txt /一种 /CMakeLists.txt /a.cpp /乙 /CMakeLists.txt /包括 /开源项目-1 /includeMe.h /开源项目-2
  1. 我需要使用 cmake include_directories() 命令吗?如果是这样,我需要将它放在哪个 CMakeLists.txt 文件中? (我尝试了很多变化)
  2. 我需要不同的 cmake 命令吗?
  3. 如果我把它放在最顶层的 CMakeLists.txt 中,是否应该处理 A 项目或 B 项目的 .cpp 文件中所有出现的#include?​​li>
  4. 这是 c++ 项目的典型设置吗?这看起来合乎逻辑吗?

【问题讨论】:

    标签: c++ cmake setup-project


    【解决方案1】:

    不需要您的顶级 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. 不,这是不典型的。

    【讨论】:

    • 谢谢,这很有帮助。顺便说一句,我在 a.cpp 中使用 #include 同时还使用了 include_directories(../include/open-source-project-1),但是得到了a 没有这样的文件或目录错误。通过使用 include_directories(../include) 修复。
    猜你喜欢
    • 2011-05-04
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2021-12-07
    相关资源
    最近更新 更多