CMakeLists.txt是构建逻辑脚本,核心为三层结构:项目定义(cmake_minimum_required+project)、源码组织(add_executable/add_library)、构建目标(编译选项、头文件路径、链接依赖);大型项目需模块化拆分并用作用域关键字管控可见性。
用 CMake 管理 C++ 项目,核心是写好 CMakeLists.txt —— 它不是配置文件,而是一份“构建逻辑脚本”。从零开始,关键不是背命令,而是理解三层结构:项目定义 → 源码组织 → 构建目标。
每个 CMakeLists.txt 必须以 cmake_minimum_required() 开头,明确最低 CMake 版本(推荐 3.10 或更高),避免因版本差异导致命令不可用。紧接着用 project() 声明项目名、支持的语言(CXX 表示 C++)和版本号:
// 示例:最简起点
cmake_minimum_required(VERSION 3.10)
project(MyApp VERSION 1.0 LANGUAGES CXX)
这一步会自动定义 PROJECT_NAME、PROJECT_VERSION 等变量,后续可直接引用。
用 add_executable() 或 add_library() 注册构建目标。参数是目标名 + 源文件列表(支持相对路径):
add_executable(hello main.cpp utils.cpp) → 生成可执行文件 hello
add_library(core STATIC core.cpp core.h) → 生成静态库 libcore.a
add_library(network SHARED net_client.cpp) → 生成动态库 libnetwork.so(Linux)或 network.dll(Windows)注意:头文件(如 .h)不参与编译,但建议列出来,方便 IDE 识别和代码导航。
让项目真正“工程化”,靠的是这两类指令:
set_property() 或 target_compile_options() 控制标准、警告、优化级别target_compile_options(hello PRIVATE -std=c++17 -Wall -Wextra)
target_include_directories() 告诉编译器去哪里找 #includetarget_include_directories(hello PRIVATE include/)(PRIVATE 表示仅该目标使用)target_link_libraries() 关联库(含系统库或第三方)target_link_libraries(hello PRIVATE core network)(CMake
自动处理 libcore.a 和 libnetwork.so 的路径与顺序)大型项目应拆分 CMakeLists.txt:根目录只负责全局设置和子目录引入,各模块自建自己的 CMakeLists.txt:
add_subdirectory(src)、add_subdirectory(third_party)
src/CMakeLists.txt 中专注定义 add_executable() 和本地依赖if(WIN32)、if(APPLE)、if(UNIX AND NOT APPLE),用于条件设置(如 Windows 需要 target_link_libraries(app PRIVATE wsock32))不复杂但容易忽略:始终用 PRIVATE/PUBLIC/INTERFACE 明确作用域,避免头文件路径或宏定义意外泄露到下游目标。
# linux
# windows
# app
# ai
# unix
# c++
# win
# apple
# 配置文件
# 作用域
# red
# Static
# if
# include
# public
# private
# Interface
# ide
# 头文件
# 可执行文件
# 自己的
# 的是
# 进阶
# 可直接
# 第三方
# 第二步
# 两类
# 写好
相关文章:
如何选择高性价比服务器搭建个人网站?
北京的网站制作公司有哪些,哪个视频网站最好?
ui设计制作网站有哪些,手机UI设计网址吗?
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站之星各版本价格是多少?
C#如何在一个XML文件中查找并替换文本内容
建站之星备案流程有哪些注意事项?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
已有域名和空间,如何快速搭建网站?
如何选择建站程序?包含哪些必备功能与类型?
如何快速上传自定义模板至建站之星?
开源网站制作软件,开源网站什么意思?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何用y主机助手快速搭建网站?
如何通过网站建站时间优化SEO与用户体验?
如何通过VPS搭建网站快速盈利?
linux top下的 minerd 木马清除方法
建站之星客服服务时间及联系方式如何?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
全景视频制作网站有哪些,全景图怎么做成网页?
如何在阿里云通过域名搭建网站?
seo网站制作优化,网站SEO优化步骤有哪些?
如何选择可靠的免备案建站服务器?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
建站之星安装后如何配置SEO及设计样式?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
江苏网站制作公司有哪些,江苏书法考级官方网站?
建站之星好吗?新手能否轻松上手建站?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
官网网站制作腾讯审核要多久,联想路由器newifi官网
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
大连网站设计制作招聘信息,大连投诉网站有哪些?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
已有域名和空间如何搭建网站?
建站之星收费标准详解:套餐费用及年费价格表一览
建站之星导航如何优化提升用户体验?
如何在阿里云香港服务器快速搭建网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何通过建站之星自助学习解决操作问题?
网站制作公司排行榜,四大门户网站排名?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何快速查询网址的建站时间与历史轨迹?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
*请认真填写需求信息,我们会在24小时内与您取得联系。