论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
CMake个人理解和使用
CMake个人理解和使用
忿忿的泥巴坨
论坛元老
|
2023-6-17 10:35:08
|
显示全部楼层
|
阅读模式
楼主
主题
2029
|
帖子
2029
|
积分
6087
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
前言
CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的项目中,开发人员可以根据自己的喜好来使选择IDE,不用受其他人工程配置的影响,它有点像跨平台的IDE,通过它配置好相关设置之后,可以在多个平台无缝衔接,提高开发效率。
最简单的CMake工程
项目搭建
一个用CMake来管理的项目,其项目根目录通常会包含一个CMakeLists.txt的文件,当然子目录可能也有,这种情况我们稍后再说。我们先从最简单的项目开始。以下就是一个最简单的工程示例:
CMakeProject
| CMakeLists.txt
| main.cpp
复制代码
这就是完整的可以跑起来的最小项目了。按照顺序,我们来看看文件里的内容
CMakeLists.txt
# 设置版本号
cmake_minimum_required(VERSION 3.10)
# 设置项目名
project(CMakeProject)
# 设置产物和源码的关联
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
复制代码
说明:
CMake中命令不区分大小写
以#开始的是备注
引用变量语法${变量名}
所以文档中真正的有效内容就三行,
cmake_minimum_required(VERSION 3.10)设置了CMake支持的最低版本,VERSION是参数名,后面是版本号,可以根据自己的需要修改。
注意参数名和参数是以空白符分隔的,不是逗号,
不然会报错。
project(CMakeProject)CMake中字符串可以带引号或者不带,效果是一致的,这一行就是配置了项目名,如生成的Visual Studio的工程名就是依据这个名字来的。
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
才是真正管理源码和目标产物的地方,这里我们使用了引用变量的写法,而文件中没有定义这个变量,说明这个变量存在于CMake中,在CMake还有很多预定义的变量,我们可以直接通过这种方式引用,上面的写法是将项目名设置为产物的名字,当然也可以直接填字符串,取个另外的名字都是可以的。后面的main.cpp则是用来生成产物的源码路径,这就是CMake最灵活的地方。
源码路径可以是多样的,查找出来的,直接写的,相对路径,绝对路径都可以。
多个源码的话就用空白符分隔,依次写就行了。
在上面的配置文件中,我们配置了它的源文件为main.cpp,我们想通过它来生成一个可执行的程序,内容也很简单:
[code]#include int main(){ std::cout
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
忿忿的泥巴坨
论坛元老
这个人很懒什么都没写!
楼主热帖
axios 传递参数的方式(data 与 params ...
Swift字符串操作-持续更新-2022 ...
【iOS逆向与安全】frida-trace入门 ...
springmvc异常处理解析#ExceptionHandl ...
Kubernetes(K8S) Controller - Deploym ...
食品商城网站设计—食品商城购物网站(8 ...
MVCC - Read View的可见性判断理解 ...
隐匿自己的c2服务器(一)
最佳实践-使用Github Actions来构建跨 ...
PHP001
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
虚拟化与私有云
人工智能
快速回复
返回顶部
返回列表