1`构建工具_Cmake
CMake
CMake 是一个 跨平台的构建工具,可以根据不同的平台、不同的编译器,生成相应的构建文件
源文件想要在各个平台各个编译器运行:
- 考虑没有cmake的情况:需要考虑低级构建脚本的差异
- 考虑用cmake的情况:通过高层抽象cmake,将它编译成特定平台的低级构建脚本(Makefile 、.vcxproj、bat、.sh)
CmakeLists.txt配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
cmake_minimum_required(VERSION 3.10)//指定最低CMake版本
project(MyProject) //项目名称
set(CMAKE_CXX_STANDARD 17) //C++标准:11, 14, 17, 20, 23
set(CMAKE_BUILD_TYPE Debug) //编译类型(Debug/Release)
find_package(OpenGL REQUIRED)//查找包
//源文件
set(SOURCES
src/main.cpp
src/utils.cpp
src/glfw_window.cpp
)
file(GLOB SOURCES "src/*.cpp")
file(GLOB_RECURSE SOURCES "src/*.cpp")//递归查找
//包含目录
include_directories(
include/
third_party/glfw/include
)
//构建目标
add_executable(my_app ${SOURCES})//可执行文件
add_library(my_lib STATIC ${SOURCES})//静态库
add_library(my_lib SHARED ${SOURCES})//动态库
//链接库
target_link_libraries(my_app
OpenGL::GL
Threads::Threads
)
//条件编译
if(WIN32)
target_link_libraries(my_app ws2_32)
elseif(UNIX AND NOT APPLE)
target_link_libraries(my_app dl)
endif()
//安装目标
install(TARGETS my_app
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
展开
生成工程、构建运行
- 生成工程
命令行方式
1 2 3
mkdir build//创建文件夹build cd build//进入文件夹 cmake .. -G "Visual Studio 17 2022" -A x64 // -G指定编译器(可选。否则使用默认编译器),指定CmakeLists.txt所在目录
展开
- 构建工程文件
GUI方式
- 选择源码目录
- 选择输出目录
- 点击Configure,选择要构建的目标,等待配置,done……,生成Makefile
- 点击Generate,done……,生成工程文件
1
2
cmake --build .//构建项目
Main.exe//运行可执行文件
展开
- 命令行编译运行
- 调试:自动生成pdb
- 多文件:在CmakeLists.txt中,可以使用file(GLOB_RECURSE SOURCES “src/*.cpp”)多源文件编译操作
- 使用库:
本文由作者按照 CC BY 4.0 进行授权
