首页 > 其他分享 >Makefile

Makefile

时间:2022-10-20 18:24:13浏览次数:76  
标签:文件 gcc Makefile 目标 cpp main

MAKEFILE学习视频地址:https://www.bilibili.com/video/BV1Xt4y1h7rH/?p=2&vd_source=305f791c703672cea3129189ddda734f

目标:一般指要编译的目标,也可以是一个动作

依赖:指执行当前目标所要依赖的选项,包括其它目标,某个具体文件或库等一个目标可以有多个依赖

命令:该目标下要执行的具体命令,可以没有,也可以有多条。多条时,每条命令一行

3:gcc/g++编译流程详解

gcc –lstdc++ main.cpp:直接从源代码到目标可执行文件了

把过程拆分

预处理:gcc –E main.cpp>main.ii

编译: gcc –S main.ii得到名为main.s的汇编文件

汇编: gcc –c main.s得到名为main.o(.obj)的二进制文件

链接: gcc –lstdc++ main.o 得到名为a.out的可执行文件

3:Makefile中的变量

系统变量:

$* 不包括扩展名的目标文件名称

$+ 所有依赖文件,以空格分隔

$< 表示规则中的第一个条件

$? 所有时间戳(NWYA)比目标文件晚的依赖文件,以空格分隔

$@ 目标文件的完整名称

$^ 所有不重复的依赖文件,以空格分隔

$% 如果目标是归档成员,则该变量表示目标的归档成员名称

系统常量:(可用make –p查看)

AS 汇编程序的名称,默认为as

CC C编译器名称,默认为cc

CPP C预编译器名称,默认为cc –E

CXX C++编译器名称,默认为g++

RM 文件删除程序别名,默认为rm –f

自定义定量

定义:变量名=变量值

使用:$(变量名)/${变量名}

4:Makefile中的伪目标和模式匹配

伪目标 .PHONY:clean

声明目标为伪目标之后,makefile将不会判断目标是否存在或该目标是否需要更新

%.o:%.cpp .o依赖于对应的.cpp

Wildcard $(wildcard ./*.cpp)获取当前目录下所有的.cpp文件

Patsubst $(patsubst %.cpp,%.o,./*.cpp)将对应的cpp文件名替换成.o文件名

5:Makefile运行流程

保证目标是用最新的依赖生成的

第一次完全编译,后面只编译最新的代码(部分编译)

标签:文件,gcc,Makefile,目标,cpp,main
From: https://www.cnblogs.com/gaoyuxia/p/16810810.html

相关文章

  • makefile学习
    makefile书写规则TARGET...:PREREQUISITES...COMMANDTARGET:规则目标,可以是一个objectfile(目标文件),也可以是一个执行文件,还可以是一个标签(label)。PREREQUISITE......
  • Linux系统编程04-Makefile
    文件命名:makefile或Makefile规则:一个Makefile文件中可以有一个或多个规则目标...:依赖...​ 命令(shell命令)​ ...目标:最终生成的文件依赖:......
  • 【AI白身境】只会用Python?g++,CMake和Makefile了解一下
    今天是新专栏《AI白身境》的第六篇,所谓白身,就是什么都不会,还没有进入角色。对于大部分小白来说,因为python用的太爽,以致于或许都没有听说过CMake。python是脚本语言,而当前大......
  • 第2天 汇编语言与makeFile
    汇编orgorigin表示程序加载的开始地址,也就是将程序从什么位置进行加载JMP相当于c语言的goto语句,无条件跳转。jmpentry表示跳转到entry语句块。MOV数据传送指令,需......
  • VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置
    本次使用开发板为STM32F401CCU6,使用CubeMX配置一个Makefile工程  配置时候为内部时钟  工程选择makefile工程类型 只生成需要的文件  用VSCode打开后显......
  • Can't exec "mysql_config": No such file or directory at Makefile.PL line 89.
     001、问题Can'texec"mysql_config":NosuchfileordirectoryatMakefile.PLline89.  002、解决方法(base)[[email protected]]#yuminstal......
  • make/Makefile --- 默认规则
    make有一条默认规则,当找不到xxx.o文件时,会查找目录下的同名xxx.c文件进行编译MakeFile:  make ......
  • GDB及Makefile学习
    GDB(1)下载安装gdb:sudoapt-getinstallgdb(2)启动gdbgdbtest(3)启动后界面如下:参考老师所给ppt内容我们可以输入(gdb)l列出文件的代码清单·(gdb)b1.函数......
  • makefile2
    一、make执行解析与实例操作1、#make后没有指定,只执行第一个定义。优先执行依赖,依赖没有就依次查找依赖,找到后执行依赖生成文件,在继续执行。make-s#不打印输出命令例1......
  • MakeFile编写深入进阶
    make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的make。Makefile里有什么?Mak......