Cmake

文档说明

  • 用于记录CMake编译器的用法

CMake用法

基础

  • 模板
1
2
3
cmake_minimum_required(VERSION 3.10)  #版本

project(MyProject) #项目名
  • 可执行文件
1
add_executable(可执行文件名 main.cpp) 
  • 多个可执行文件
1
2
add_executable(可执行文件名1 my1.cpp) 
add_executable(可执行文件名2 my2.cpp)

生成静态文件

  • 生成静态库
1
2
set(MUL_SOURCES ./mul/mul.cpp)          #设置CPP路径变量
add_library(mul STATIC ${MUL_SOURCES}) #通过MUL_SOURCES路径STATIC属性添加为静态库
  • 链接全局,将静态链接链接至所有程序
1
2
3
include_directories(./)  #添加头文件路径
1.link_directories(路径) #添加静态库链接所在目录
2.link_libraries(库名) #将静态库链接到全局文件
  • 链接指定目标,将静态链接链接向指定目标
1
2
3
include_directories(./)  #添加头文件路径
1.target_link_directories(main PUBLIC 路径) #添加静态库链接所在目录
2.target_link_libraries(main 库名) #将静态库链接到全局文件

生成动态文件

1
2
set(MUL_SOURCES ./mul/mul.cpp)          #设置CPP路径变量
add_library(mul SHARED ${MUL_SOURCES}) #通过MUL_SOURCES路径SHARED属性添加为动态库
  • 链接全局,将静态链接链接至所有程序
1
2
3
include_directories(./)  #添加头文件路径
1.link_directories(路径) #添加动态库链接所在目录
2.link_libraries(库名) #将动态库链接到全局文件
  • 链接指定目标,将静态链接链接向指定目标
1
2
3
include_directories(./)  #添加头文件路径
1.target_link_directories(main PUBLIC 路径) #添加动态库链接所在目录
2.target_link_libraries(main 库名) #将动态库链接到全局文件

调用第三方库

  • 调用静态库,必须要有头文件
1
2
3
4
5
6
7
8
9
10
11
12
# CMakeLists.txt  
cmake_minimum_required(VERSION 3.10)

project(MyProject)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tt) #头文件路径

# 添加可执行文件 main
add_executable(my main.cpp)


target_link_libraries(my ${CMAKE_CURRENT_SOURCE_DIR}/tt/gx.lib) #静态库路径

源码

构建可执行文件

1
2
3
4
5
6
7
8
//目录结构

我的项目
main.cpp
CMakeLists.txt
test/
test.cpp
test.h
  • CMakeLists.txt
1
2
3
cmake_minimum_required(VERSION 3.10)  
project(MyProject)
add_executable(my main.cpp)

库管理工具vcpkg

1
git clone https://github.com/microsoft/vcpkg.git

cmd指令

vcpkg(或 vcpkg.exe 在 Windows 上)是 Microsoft 的跨平台 C++ 包管理器。它允许你轻松地从源代码构建、安装和管理 C++ 库和工具。

以下是一些常用的 vcpkg 指令:

  1. 搜索包
1
vcpkg search <package-name>
  1. 安装包
1
vcpkg install <package-name>

例如,要安装 zlib,你可以运行:

1
vcpkg install zlib
  1. 更新包
1
vcpkg update

或者更新特定的包:

1
vcpkg update <package-name>
  1. 列出已安装的包
1
vcpkg list
  1. 删除包
1
vcpkg remove <package-name>
  1. 导出包:为指定的包生成 NuGet 包。
1
vcpkg export <package-name>
  1. 查看包的信息
1
vcpkg info <package-name>
  1. 集成到 Visual Studio
1
vcpkg integrate install

这将自动将 vcpkg 安装的库集成到 Visual Studio 中,以便你可以直接在项目中引用它们。
9. 集成到 CMake
vcpkg 提供了 CMake 工具链文件,你可以在你的 CMakeLists.txt 文件中包含它们来找到和链接 vcpkg 安装的库。
10. 清理构建缓存

1
vcpkg purge
  1. 查看帮助
1
vcpkg help

或针对特定的命令:

1
vcpkg help <command>

查看版本

1
vcpkg version

请注意,vcpkg 的具体命令和选项可能会随着版本的更新而发生变化。因此,建议经常查看其官方文档或运行 vcpkg help 来获取最新的信息。