- 让我们从一个例子来大概介绍make工具: 有个加密工具: encrypt.h void encrypt(char *message); 1 encrypt.c #include "encrypt.h" void encrypt(char *message){ while(*message){ *message = *message ^ 31; message++;... 让我们从一个例子来大概介绍make工具: 有个加密工具: encrypt.h void encrypt(char *message); 1 encrypt.c #include "encrypt.h" void encrypt(char *message){ while(*message){ *message = *message ^ 31; message++;...
- Makefile 规则中目标可以有多个。如需要生成多个可执行文件的做法。使用伪目标的方法,给伪目标指定所依赖的文件: all:main hello test .PHONY:all main: gcc -o main main.c hello: gcc -o hello hello.c test: gcc -o test test.c .PHONY:clean cle... Makefile 规则中目标可以有多个。如需要生成多个可执行文件的做法。使用伪目标的方法,给伪目标指定所依赖的文件: all:main hello test .PHONY:all main: gcc -o main main.c hello: gcc -o hello hello.c test: gcc -o test test.c .PHONY:clean cle...
- 概述 一个开发工程会有很多的源文件,它们按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译等。makefile文件关系到整个工程的编译规则。写好的makefile,只要运行make命令,就会按makefile里定义好的规则来编译工程。 make 是一个用来解析makefile... 概述 一个开发工程会有很多的源文件,它们按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译等。makefile文件关系到整个工程的编译规则。写好的makefile,只要运行make命令,就会按makefile里定义好的规则来编译工程。 make 是一个用来解析makefile...
- 在makefile规则的一般形式: 目标文件:依赖文件 执行命令 12 说明:执行命令会将依赖文件编译成目标文件。 而“伪目标”不是一个目标文件,只是一个标签而已。由于“伪目标”不是文件,所以 make无法生成它的依赖关系和决定它是否要执行,只能通过在执行make命令时显式地指明这个“目标”才能让其效。 伪目标例子: clean: rm *.o temp 12... 在makefile规则的一般形式: 目标文件:依赖文件 执行命令 12 说明:执行命令会将依赖文件编译成目标文件。 而“伪目标”不是一个目标文件,只是一个标签而已。由于“伪目标”不是文件,所以 make无法生成它的依赖关系和决定它是否要执行,只能通过在执行make命令时显式地指明这个“目标”才能让其效。 伪目标例子: clean: rm *.o temp 12...
- 当执行某个规则出现错误时,会马上停止该目标和该目标的依赖目标的生成。如何忽略错误,继续生成此目标之上的所有其它目标呢? 演示例子: r1:r2 r3 echo 1 r2:r21 echo 2 cat tes.txt #tes.txt不存在,故意指定这条出错 r21: echo 21 r3:r31 echo 3 r31: echo 31 1234567891011 我... 当执行某个规则出现错误时,会马上停止该目标和该目标的依赖目标的生成。如何忽略错误,继续生成此目标之上的所有其它目标呢? 演示例子: r1:r2 r3 echo 1 r2:r21 echo 2 cat tes.txt #tes.txt不存在,故意指定这条出错 r21: echo 21 r3:r31 echo 3 r31: echo 31 1234567891011 我...
- 在上篇《make命令的自动推导》中,我们利用make的自动推导简化了makefile: OBJECTS = main.o hello.o app:$(OBJECTS) gcc -o app $(OBJECTS) main.o:hello.h hello.o:hello.h clean: rm app $(OBJECTS) 1234567 我们可以看到下面的内容,... 在上篇《make命令的自动推导》中,我们利用make的自动推导简化了makefile: OBJECTS = main.o hello.o app:$(OBJECTS) gcc -o app $(OBJECTS) main.o:hello.h hello.o:hello.h clean: rm app $(OBJECTS) 1234567 我们可以看到下面的内容,...
- make 支持三个通配符: * : 星号(*)代替了一系列的文件,如 *.c 表示所有后缀为 c 的文件。~ :波浪号(~ )在文件名中有特殊用途,如 ~/test 当前用户的家目录下的test目录(Linux环境下)。? 注意: CFILES = *.c 1 通配符同样可以用在变量中,但是 *.o 不会展开,所以CFILES的值就是 *.c 。在makefil... make 支持三个通配符: * : 星号(*)代替了一系列的文件,如 *.c 表示所有后缀为 c 的文件。~ :波浪号(~ )在文件名中有特殊用途,如 ~/test 当前用户的家目录下的test目录(Linux环境下)。? 注意: CFILES = *.c 1 通配符同样可以用在变量中,但是 *.o 不会展开,所以CFILES的值就是 *.c 。在makefil...
- makefile的介绍可以参考《makefile介绍及示例》 Makefile文件由五部分组成: 显式规则:显式指出生成的目标文件、依赖的文件、生成命令。隐式规则:利用make的自动推导功能,可以简化规则的编写,参考《make命令的自动推导》。变量定义:定义一系列的变量,可以在Makefile文件其他地方引用。文件指示:包括三部分,(1)一个是在一个 Makefil... makefile的介绍可以参考《makefile介绍及示例》 Makefile文件由五部分组成: 显式规则:显式指出生成的目标文件、依赖的文件、生成命令。隐式规则:利用make的自动推导功能,可以简化规则的编写,参考《make命令的自动推导》。变量定义:定义一系列的变量,可以在Makefile文件其他地方引用。文件指示:包括三部分,(1)一个是在一个 Makefil...
- GNU 的 make 可以自动推导文件以及文件依赖关系后面的命令。因此,我们就没必要在 每个 .o 文件后都写上类似的命令, make命令会自动识别,并进行推导命令。 当make命令看到一个 .o 文件,它就会自动把 .c 文件加在依赖关系中,例如make找到main.o,就可以推导出main.c就是main.o的依赖文件,并且推导出要执行的命令gcc -c main... GNU 的 make 可以自动推导文件以及文件依赖关系后面的命令。因此,我们就没必要在 每个 .o 文件后都写上类似的命令, make命令会自动识别,并进行推导命令。 当make命令看到一个 .o 文件,它就会自动把 .c 文件加在依赖关系中,例如make找到main.o,就可以推导出main.c就是main.o的依赖文件,并且推导出要执行的命令gcc -c main...
- 在声明变量时需要初始化。通过在变量名前加上 $ 符号引用变量,最好用上小括号 () 或 大括号 {} 把变量括起来。变量是大小写敏感的。 如果需要用 $ 字符,那么需要用 $$ 来表示。 变量可以使用在规则中的“目标”、“依赖”、“命令”中及新的变量中。如: CC = gcc OBJS = program.o foo.o utils.o program : $(OB... 在声明变量时需要初始化。通过在变量名前加上 $ 符号引用变量,最好用上小括号 () 或 大括号 {} 把变量括起来。变量是大小写敏感的。 如果需要用 $ 字符,那么需要用 $$ 来表示。 变量可以使用在规则中的“目标”、“依赖”、“命令”中及新的变量中。如: CC = gcc OBJS = program.o foo.o utils.o program : $(OB...
- 在Makefile文件中,我们的依赖关系中可能会包含一系列的头文件,当工程比较大时,我们必须搞清楚哪些.c文件包含了哪些头文件,在加入或删除这些头文件时,都要修改Makefile文件。这样的修改很麻烦,而且很容易修改错。 为了避免上面这种繁重又容易出错的工作,我们可以使用C/C++编译器自动寻找源文件中包含的头文件,并生成一个依赖关系 ,命令如下: gcc -MM ... 在Makefile文件中,我们的依赖关系中可能会包含一系列的头文件,当工程比较大时,我们必须搞清楚哪些.c文件包含了哪些头文件,在加入或删除这些头文件时,都要修改Makefile文件。这样的修改很麻烦,而且很容易修改错。 为了避免上面这种繁重又容易出错的工作,我们可以使用C/C++编译器自动寻找源文件中包含的头文件,并生成一个依赖关系 ,命令如下: gcc -MM ...
- 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。格式: <targets ...> : <target-pattern> : <prereq-patterns ...> <commands> ... 123 说明: <targets …>:指定一个或多个目标文件,可使用通... 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。格式: <targets ...> : <target-pattern> : <prereq-patterns ...> <commands> ... 123 说明: <targets …>:指定一个或多个目标文件,可使用通...
- 每条命令的开头必须以 Tab 键开头,除非命令是跟在依赖规则后的分号后面。在命令行之间中的空格或者空行会被忽略,但是如果该空格或空行是以 Tab 键开头的,那么 make 会认为其是一个空命令。 如果我们在编译过程中,可以显示正在编译哪一步,就会很方便我们对程序编译的监控。我们可以使用makefile的一些显示命令,添加上一些类似注释的信息,伴随编译的过程打印到控制台... 每条命令的开头必须以 Tab 键开头,除非命令是跟在依赖规则后的分号后面。在命令行之间中的空格或者空行会被忽略,但是如果该空格或空行是以 Tab 键开头的,那么 make 会认为其是一个空命令。 如果我们在编译过程中,可以显示正在编译哪一步,就会很方便我们对程序编译的监控。我们可以使用makefile的一些显示命令,添加上一些类似注释的信息,伴随编译的过程打印到控制台...
- 演示示例: app:main.o hello.o gcc -o app main.o hello.o main.o:main.c hello.h gcc -c main.c hello.o:hello.c hello.h gcc -c hello.c clean: rm app main.o hello.o 123456789 先让我们看看 app 的规则: a... 演示示例: app:main.o hello.o gcc -o app main.o hello.o main.o:main.c hello.h gcc -c main.c hello.o:hello.c hello.h gcc -c hello.c clean: rm app main.o hello.o 123456789 先让我们看看 app 的规则: a...
- 编译程序时,我们通常直接在makefile文件所在目录下执行make命令: makefile: app:main.o hello.o gcc -o app main.o hello.o main.o:main.c hello.h gcc -c main.c hello.o:hello.c hello.h gcc -c hello.c clean: rm app mai... 编译程序时,我们通常直接在makefile文件所在目录下执行make命令: makefile: app:main.o hello.o gcc -o app main.o hello.o main.o:main.c hello.h gcc -c main.c hello.o:hello.c hello.h gcc -c hello.c clean: rm app mai...
上滑加载中
推荐直播
-
Ascend C算子编程之旅:基础入门篇
2024/11/22 周五 16:00-17:30
莫老师 昇腾CANN专家
介绍Ascend C算子基本概念、异构计算架构CANN和Ascend C基本概述,以及Ascend C快速入门,夯实Ascend C算子编程基础
回顾中 -
深入解析:华为全栈AI解决方案与云智能开放能力
2024/11/22 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播我们将重点为大家介绍华为全栈全场景AI解决方案以和华为云企业智能AI开放能力。旨在帮助开发者深入理解华为AI解决方案,并能够更加熟练地运用这些技术。通过洞悉华为解决方案,了解人工智能完整生态链条的构造。
回顾中 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签