CMake 实践
2021-01-14 13:52:01
相关说明
当前的 C++ 工具链为VSCode
+MinGW
+CMake
不知为何CLion
找不到我用 LxRunOffline 搭建的 WSL2-arch,挺头晕的,也一直没解决
样本项目的结构如下:
1 | . |
工程起名
1 | project(${PROJECT_NAME}) |
寻找头文件
1 | include_directories(${CMAKE_CURRENT_LIST_DIR}/include) |
${CMAKE_CURRENT_LIST_DIR}
CMakeLists.txt 所在路径
寻找源文件
1 | aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src project_src) |
将${CMAKE_CURRENT_LIST_DIR}/src
路径下所有源文件保存到project_src
中
须知:
-aux_source_directory()
无法递归包含子目录
- src 中有新的源文件添加时,
${project_src}
不包含新添加的源文件,需要重新cmake
寻找库文件
1 | link_directories(${CMAKE_CURRENT_LIST_DIR}/lib) |
指定 Makefile 生成位置
1 | set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/build) |
构建目标
1 | add_executable(${PROJECT_NAME} ${project_src}) |
将${project_src}
中的源文件生成可执行文件${PROJECT_NAME}
启用 C++11
1 | set(CMAKE_CXX_FLAGS "-std=c++11") # c++11 |
构建
CMakeLists.txt
文件大致可以这样写
1 | cmake_minimum_required (VERSION 3.19.0) |
接下来可用两种方法:
- 进入项目,创建
build
文件夹用于构建
1 | mkdir build |
cmake -G "Unix Makefiles" ../
这条命令用于第一次构建,后续需要重构时用camke .
2. 利用VSCode
的CMake相关插件