cmake与make的项目构建快速上手
Posted 帅气的黑桃J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake与make的项目构建快速上手相关的知识,希望对你有一定的参考价值。
简介
cmake工具可以生成makefile文件,makefile文件可以指定一个项目中那些文件需要编译,哪些文件不需要编译,在项目开发中十分重要。
前述知识——C程序编译的过程
-
预编译
将.c/.h文件预编译为.i文件,具体地,将.c中的头文件和库文件导入进来;进行宏定义的替换
-
汇编
将.i文件转换为.S文件(汇编)
-
编译
将.S转换为.o文件(obj二进制文件)
-
链接
将.o文件转换为.exe可执行文件(linux中的.elf)
一般的IDE自动完成.c到.exe中间变量的配置,如果自己构建makefile文件,用.c文件生成.exe文件,可以参考如下命令
# eg:用.c获取.exe文件(最简单的编译)
hello.i:hello.c
gcc -E hello.c -o hello.i
hello.S:hello.i
gcc -S hello.i -o hello.S
hello.o:hello.S
gcc -c hello.S -o hello.o
hello:hello.o
gcc hello.o -o hello
开发环境
- window10
- cmake 3.22.2
- GUN Make 3.82.90
环境配置教程和学习教程
建议:按照顺序学习
cmake特点
- 跨平台——平台无关
- 大小写无关
CMake语法介绍
PROJECT
-
设置项目名——PROJECT
-
PROJECT(HELLO C CXX)
为项目名为HELLO,支持c,c++语言
SET
-
设置变量——SET
-
SET(SRC_LIST main.cpp test.cpp)
MESSAGE
-
设置消息——MESSAGE
-
MESSAGE(STATUS "THIS IS MY DIR" $HELLO_BINART_DIR)
ADD_EXECUTABLE
-
生成可执行文件——ADD_EXECUTABLE
-
ADD_EXECUTABLE(HELLO $SRC_LIST)
或ADD_EXECUTABLE(HELLO main.cpp)
ADD_SUBDIRECTORY
-
ADD_SUBDIRECTORY添加子目录,可以指定中间二进制和目标二进制的存放位置
-
```ADD_SUBDIRECTORY(src bin)``
将src子目录加入工程并指定编译输出(包含中间编译结果),路径为bin目录
如果不指定bin的话,那么编译结果都将放在bulid/src目录下
变量之间可以用空格来分割,也可以用分号来分割
Makefile快速上手
-
单文件构建项目
# eg:用.c获取.exe文件(最简单的编译) hello:hello.o gcc hello.o -o hello hello.i:hello.c gcc -E hello.c -o hello.i hello.S:hello.i gcc -S hello.i -o hello.S hello.o:hello.S gcc -c hello.S -o hello.o
需要注意是:
-
.’.PHONY:’——伪目标,执行额外的命令
.PHONY: # 删除所有文件 clearall: rm -rf hello.i hello.S hello.o hello # 删除过程文件 clear: rm -rf hello.S hello.i
调用方式(DOS命令):
# 删除所有文件 make clearall # 删除过程文件 make clear
快速上手
以上是关于cmake与make的项目构建快速上手的主要内容,如果未能解决你的问题,请参考以下文章
CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置