CMake 示例工程代码
https://github.com/LABELNET/cmake-simple
单项目单模块示例工程
https://github.com/LABELNET/cmake-simple/tree/main/simple
1. 单模块工程
CMake 单模块工程,这是一个示例工程
- simple , 项目名称
- cmake , 第三方依赖
- demo , 主模块 main
2. 目录结构
$ .SIMPLE
│ CMakeLists.txt # 项目根 CMakeLists.txt , 用于项目配置
│ README.md # 说明文档,无关
├───.vscode # 头文件路径配置
│ c_cpp_properties.json
├───cmake # 第三方依赖文件夹
├───build # CMake 编译输出
└───demo # 主模块
│ CMakeLists.txt # 主模块 CMakeLists.txt
├───include # 源码:头文件文件夹
│ demo_utils.h
└───src # 源码: 代码文件夹
demo_utils.cc
main.cc
3. 项目/CMakeLists.txt
以项目编译配置为主
cmake_minimum_required(VERSION 3.18)
# 1.编译类型
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
# 2. C++ 标准库
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# 3. 第三方库
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake;${CMAKE_MODULE_PATH}")
# 4.工程名称
project(simple LANGUAGES CXX)
# 5.主模块 main
add_subdirectory(demo)
4. 模块/CMakeLists.txt
以功能模块开发为主,单模块就一个主(Main)模块,此时为可执行文件
add_executable(demo)
cmake_minimum_required(VERSION 3.18)
# 1.可执行文件
add_executable(demo)
# 2.源码,注意: 源文件代码格式,这里用的为 .cc 文件
file(GLOB_RECURSE srcs CONFIGURE_DEPENDS src/*.cc include/*.h)
# 3.目标
target_sources(demo PUBLIC ${srcs})
# 4.头文件
target_include_directories(demo PUBLIC include)