CMake使用指南
单文件编译
添加版本号
project(xxx VERSION 0.1.0)
指定C++版本
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
多文件编译
- 将所有头文件放到Include文件夹下,源文件放到Source文件夹下
- 用include_directories() 包含头文件
- 利用aux_source_directory() 引用所有的源文件,并保存到一个变量中(这个函数可以递归找子文件夹下的源文件吗?追加源文件呢?)
例子
# 文件夹结构长这样
# --Include
# |--xxx.h
# --Source
# |--xxx.cpp
# --main.cpp
cmake_minimum_required(VERSION 3.20)
project(TinyMS VERSION 0.1.0)
include_directories(./Include) # 包含头文件
aux_source_directory(./Source SOURCE_FILE) # 搜索source下的所有源文件
aux_source_directory(./ SOURCE_FILE) # 搜索main.cpp
add_executable(TinyMS ${SOURCE_FILE}) # 编译项目
编译成库
-
所有库文件都放到一个文件夹里面
-
这个库文件夹包含一个新的CMakeLists.txt文件
add_library(库名 xx.cpp)
-
在顶级CMakeLists.txt中添加库
add_subdirectory(库名) add_executable(xxx xx.cpp) # 如果是动态库就把PUBLIC改成SHARE target_link_libraries(xxx PUBLIC 库名)
在cmake中创建宏定义
引用第三方库
新建一个ThirdPart文件夹,把所有的`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了