首页 文章

CMake基本项目设置

提问于
浏览
2

我是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
  • 我需要使用cmake include_directories()命令吗?如果是这样,我需要将CMakeLists.txt文件放入哪个文件? (我尝试了很多变化)

  • 我需要一个不同的cmake命令吗?

  • 如果我把它放在最高级别的CMakeLists.txt中,是否应该在A项目或B项目的.cpp文件中处理所有#include?

  • 这是c项目的典型设置吗?它看起来合乎逻辑吗?

1 回答

  • 3

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

    • 如果A和B是 separate 项目, ./A/CMakeLists.txt./B/CMakeLists.txt 应至少包含以下行:
    include_directories(../include)
    

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

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

    • 否 . 仅当顶级列表文件包含 add_subdirectory 指令时,才会影响其他列表文件 .

    • 不,这是非典型的 .

相关问题