如何使用 CMake 来构建一个包含子目录的 C++ 项目

发布时间:2024年01月08日

main.cpp

#include <iostream>
/**
 * 代码作者:小秋SLAM实战教程
 * 开发环境:Ubuntu 16.04
 * 运行依赖:C++ 11
 */
int main(int argc, char** argv){
    std::cout<<"小秋SLAM实战教程"<<std::endl;
    return 0;
}

cmake_tutorial/tutorial_1/CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

project(cmake_tutorial_2)

ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
#这个指令用于向当前工程添加存放源文件的子目录

#为工程添加子目录src放工程源代码
#为工程添加文本readme.md
#为工程添加脚本.sh调用可执行程序
#为工程添加子目录bin放入生成的可执行程序

cmake_tutorial/tutorial_1/src/CMakeLists.txt

# 增加一个可执行的二进制
add_executable(tutorial_2 main.cpp)

# 为工程添加子目录bin放入生成的可执行程序
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

这个示例展示了如何使用 CMake 来构建一个包含子目录的 C++ 项目。在这个项目中,源代码被放置在 src 子目录中,而生成的可执行文件将被放置在 bin 目录中。下面是对 CMakeLists.txt 文件和项目结构的具体解释:

项目结构

项目的结构如下所示:

/cmake_tutorial/tutorial_1
|-- CMakeLists.txt
|-- /src
    |-- CMakeLists.txt
    |-- main.cpp

根目录的 CMakeLists.txt

位于 cmake_tutorial/tutorial_1CMakeLists.txt 文件负责整个项目的顶级配置。

cmake_minimum_required(VERSION 2.8)

project(cmake_tutorial_2)

# 添加 src 子目录
add_subdirectory(src)

这个文件设置了 CMake 的最低版本要求,定义了项目名称,并且添加了 src 子目录到构建中。

src 目录的 CMakeLists.txt

位于 cmake_tutorial/tutorial_1/srcCMakeLists.txt 文件用于配置源代码目录。

# 添加一个可执行文件
add_executable(tutorial_2 main.cpp)

# 指定可执行文件的输出目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

这个文件创建了一个名为 tutorial_2 的可执行文件,并设置了可执行文件的输出目录为项目根目录下的 bin 文件夹。

main.cpp

main.cpp 是程序的入口点,包含主函数。

#include <iostream>

int main(int argc, char** argv) {
    std::cout << "小秋SLAM入门实战" << std::endl;
    return 0;
}

构建过程

  1. 创建一个构建目录:在项目根目录中创建一个新目录,例如 build,用于存放构建文件。

  2. 运行 CMake:从 build 目录运行 cmake .. 命令以生成 Makefile。

  3. 编译项目:在 build 目录中运行 make 命令来编译项目。

  4. 运行可执行文件:运行位于 bin 目录中的可执行文件。

总结

在这个示例中,我们展示了如何使用 CMake 在包含子目录的项目中构建 C++ 程序。通过将源代码和可执行文件分别放在 srcbin 子目录中,项目的结构更加清晰和组织化。这种方法对于管理大型项目特别有用,因为它允许将项目分解成更小、更易于管理的部分。

文章来源:https://blog.csdn.net/qq_21950671/article/details/135442153
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。