我是怎么一步一步入坑cmake的

  • 刚开始学习C,编译、连接程序只用一句两句命令就可以完成

gcc -o hello hello.c

  • 学习深入后学会使用自带的库用到-l
gcc -o main -lgdbm main.c
  • 本来有自然是好的,但总会有系统没有的功能。这里就只能自己写库文件。有了库文件和头文件引用又是个麻烦的事。
/* 静态库 */
gcc -o func.o -c func.c
ar rsc libfunc.a fun.o
gcc main.c -o main -static -Lpathtolib -lfunc
/* 动态库 */
gcc -fPIC --shared -o libfunc.so func.c
gcc -c main.c -o main -Lpathtolib     -lfunc
  • 引入系统变量LD_LIBRARY_PATH,LIBRARY_PATH,C_INCLUDE_PATH
vi ~/.bashrc
export LD_LIBRARY_PATH='运行时使用库搜索目录'
export LIBRARY_PATH='编译时使用库搜索目录'
export C_INCLUDE_PATH='使用自定义头文件搜索目录'
  • 每次都要输入一长串的gcc命令,还要把头文件、库文件移到相应目录,实在有点麻烦。makefile出现。
/* makefile */
all:main
main:main.c libLIB.so
	gcc -o main -c main.c -lLIB -Lpath
/* 之后每次都只用make就可以了,调试方便多了*/
  • 更换系统需要在不同系统中编译同一个源文件,不同系统中用到不同的库文件,不可能第个系统都改makefile,太麻烦了。cmake出现了。
/* system A */
gcc -o main -c main.c -lLIB1 -lLIB2 
/* system B */
gcc -o main -c main.c -lLIB1 -lLIB2 -lLIB3

/* 使用cmake可以让程序管理更明白,只用cmake  make make install 固定步骤就可以了。

cmake带来了什么?

  1. 基于项目管理库、头文件,不必把很多测试项目加入系统库和头文件中。
  2. 增加移植性,不同系统的区别可以交cmake处理。对于编译,连接所有程序可以做到统一步骤。
  3. 减少引入相同库、头文件的重复操作

很多东西都有主要用途,于我而言1,2才是cmake最大意义。减少了很多因为各种系统,库文件而带来的繁锁。

这里没有说怎么使用cmake这个工具,只是说了下,怎么一步一步用到了它。我的另一篇文章有介绍怎么使用cmake构建一个学习使用的样例。样例中有使用到公用库,不同系统等使用,还有一些使用中的问题。文章地址

<think>好的,用户之前询问了如何将两个Qt项目整合为个项目,现在他问的是关于CMake工具的介绍。我需要先确定他是否在同个上下文中提问,还是切换到了新的主题。 首先,用户提到“我是cmake工具”,可能有点表述错误,应该是“使用CMake工具”或者“介绍CMake工具”。但不管怎样,核心需求是了解CMake的基本信息和用法。 回顾之前的对话,用户可能正在学习Qt项目整合,现在想转向构建工具,特别是CMake。Qt项目通常使用qmake,但CMake也是个流行的选择,尤其是在跨平台项目中。用户可能想要将现有的Qt项目迁移到CMake,或者开始使用CMake管理项目,因此需要基础介绍。 接下来,我需要组织回答的结构。用户可能需要CMake的基本概念、优势、安装方法、基本语法、与Qt的结合,以及常见问题。同时,考虑到用户之前处理过项目整合,可能需要强调CMake在管理多项目、模块化构建方面的优势。 需要确保回答清晰,分步骤或分部分,用中文,避免技术术语过多,但又要足够详细。同时,注意用户可能的后续问题,比如如何将现有的.pro文件转换为CMakeLists.txt,或者如何处理依赖问题,但当前问题只需介绍CMake即可。 需要检查是否有需要纠正的地方,比如用户说“我是cmake工具”,可能是个笔误,但回答时应该正确引导,解释CMake是什么,而不是用户自己成为工具。另外,确保示例代码正确,特别是Qt和CMake结合的部分,可能需要提到查找Qt包、链接库等步骤。 最后,提醒用户注意版本兼容性和常见错误,帮助他避免常见陷阱。可能还需要补充学习资源,帮助他进一步学习。</think>以下是对CMake工具的详细介绍(约900字): ### CMake核心定位 CMake是跨平台的开源构建系统生成器,通过编写`CMakeLists.txt`配置文件,可生成: - Windows平台的Visual Studio解决方案 - Linux/macOS平台的Makefile - Ninja构建文件 - Xcode项目文件 ### 二、核心优势对比 | 特性 | CMake | 传统Makefile | qmake
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值