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

环境配置教程和学习教程

建议:按照顺序学习

  • C语言:makefile自动编译,提高软件开发的效率,你会用吗?

  • win10环境下make的配置

  • cmake使用教程

  • https://www.hahack.com/codes/cmake/

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的项目构建快速上手_第1张图片

你可能感兴趣的:(其他,linux,服务器,make,makefile)