基于CMake构建系统的C++工程框架

本文介绍如何使用CMake构建C++工程,包括基础的工程目录结构、CMakeLists.txt文件的编写,以及如何定义动态库、静态库和可执行文件的生成规则。通过实例解析CMake指令,帮助开发者理解并建立CMake构建系统的C++工程模板。
摘要由CSDN通过智能技术生成

CMake构建系统(build system)是从C/C++源代码生成用户可以使用的目标(targets)的常用自动化工具,是作为C/C++ developer必须了解的工具之一。本文以实际的工程为例梳理常用的CMake指令,并尝试建立一个简单的基于CMake构建系统的C/C++工程框架,以为实际的C/C++工程开发提供基础模板。

基础的C/C++工程主要包含动态库,静态库,可执行文件,测试,文档这几部分内容。因此,基础的工程目录结构按如下方式组织

─ project-workspace
    ├── CMakeLists.txt
    ├── COPYRIGHT
    ├── build
    ├── docs
    │   └── README.md
    ├── libs
    │   ├── CMakeLists.txt
    │   ├── add.cpp
    │   └── add.h
    ├── src
    │   ├── CMakeLists.txt
    │   └── main.cpp
    └── test
        ├── CMakeLists.txt
        └── UTTest.cpp

CMake自动化工具虽然最终仍然生成Makefile文件,但通过CMake语言定义源代码的构建方式以简化Makefile编写工作。 

CMake自动化工具的核心是CMakeLists.txt文件,该文件定义了动态库,静态库,可执行文件等所有目标的生成规则。

按照如上的目录结果我们可以看出每个目录包含一个CMakeLists.txt文件(逻辑上也存在父子关系)。

根目录(project-workspace)下的CMakeLists.txt可以看做是整个工程的入口定义了工程基本内容,如下所示:

project-workspace/CMakeLists.txt

# set the minimum version for cmake
CMAKE_MINIMUM_REQUIRED(VERSION 3.11)

# set the project name
PROJECT(workspace)
# directive to print detail build log
SET( CMAKE_VERBOSE_MAKEFILE ON)
# set the install prefix for make install
SET( CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/out CACHE PATH "" FORCE)
# set the output directory for bin during building(make)
SET(
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值