当前位置:首页 » 编程软件 » makefileshell脚本

makefileshell脚本

发布时间: 2023-03-22 00:19:33

❶ makefile 文件组成部分

makefile文件主要有以下五种组成部分。显式规则:显式规则说明了生成一个或多个目标文件的方法和步骤。这是在编写makefile文件时明显指出的,包括要生成的文件、生成文件的依赖文件以及生成的命令等。隐式规则:由于make工具有自动推导的功能,所以在编写makefile文件的时候可以利用该规则,简略地书写makefile。再由 make 工具本身自动推导需要使用的规则。变量的定义: make工具支持变量的定义,这些变量往往都是字符串,因此makefile中的变量更像是C语言中的宏。当makefile被执行时,其中的变量都会被展开到相应的引用位置上。文件指示:其包括三个部分,一个是在一个makefile中引用另一个makefile,就像C语言中的include一样。另一个是指根据某些情况指定makefile中的有效部分,就像C语言中的预编译tlif一样。还有祥核就是定义一个多行的命令。注释: makefile 中支持行注释,这一点需要特别注意。makefile 中的注释和 shell脚本一样,其注释是用“#”字符。如果需要在 makefile中使用“#”唤宴知字符,可和消以用‘\’对其进行转义。例如,“\#”表示一个‘#’字符。makefile文件的文件名最好命名为makefile或者Makefile。因为在默认的情况下,make命令会在当前目录下按顺序找寻这两个文件进行解释。用户也可以为makefile文件自定义一个文件名,例如,Make.makefile,Make.admin等。

❷ Linux中make

在make命令中不得不提到的就是make file,makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能银空、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个 Shell脚本一样,其中也可以执行锋枝瞎操作系统的命令。
makefile带来的好处就是自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的搭芦提高了软件开发的效率。 而make是一个命令工具,是一个解释makefile中指令的命令工具。 make命令执行时,需要一个 makefile 文件,以告诉make命令需要怎么样的去编译程序。
在平时的操作练习中,我们要学会利用make。掌握它的实现方式。

❸ Makefile与shell脚本区别

makefile是通过make命令祥颤来编译搭宴雹处理程序知帆的,shell脚本是批处理命令,一般是用来管理系统的

❹ makefile与shell参数传递知识点1

在make命令行传递的参数,在本级makefile和子级makefile都能看到,但是在本级makefile调用的$(shell echo $var)里得不到,在子级makefile里调用的$(shell echo $var)里能得者蔽到。

猜测:makefile里用shell函数册嫌改时,这个shell函数用的是makefile的父级shell,州判所以没有makefile执行的这个shell的参数。

❺ 如何根据vs工程构建makefile文件

1、用makefile.ammakefile.in的,需要用automake生成的;

2、如果在windows下,需要装Cygwin再装automake;

3、然后生成相应的config文件晌核胡和Makefile;

4、如果是工程文件的,需要新建工程,然后倒入所有源代码。makefile一个工程中的源文件不计其数,其按类型宴拦、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后氏仔编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

❻ makefile预配置失败没有提供脚本怎么办

makefile预碧裂配置失败没有提供脚本需要重新编译。根据查询相关资料信息,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,碧世哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。一个工程中的源文件不计其数,其按类型,功能,模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译悔慧闭,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

❼ Linux基础中,shell脚本和makefile文件的差别是什么啊,求详细点嘛

你可以认为makefile是shell脚本“派生”出来的。最朴素的makefile可以完全通过gcc等语句实现,在这种情况下也就是shell脚本了。但是为了方便,makefile引入了大量的语法用来使编译链接变得简单,所以和shell脚本还是不同的。
可以参考:http://apps.hi..com/share/detail/31232485

❽ makefile获取目录所有文件名

您想问的是makefile如何获取目录所有文件名吗?在Linux下用Shell命令。
在Linux下用漏贺凯Shell命令,输入FILESN:= $(foreach v,$(FILESN-1),$(wildcard $(v)/*))指令即可获取。
makefile是一个工程中的源文件不计其数,其按类返唤型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定, makefile就像一个Shell脚本拍闷一样,可以执行操作系统的命令。

❾ Makefile详解

make 命令执行时,需要根据一些规则来决定按照怎么样的方式去 编译和链接程序 ,这些规则就由 makefile 文件所指定。如果我们 makefile 文件写的足够好,make 命令会自动地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。

首先,本文将给出一个makefile文件的示例,以便大家能有一个直观感受,这个例子来源于 GNU的make使用手册 。在这个例子中,我们的工程有8个c文件,和3个头文件,我们要写一个makefile来告诉make命令如何编译和链接这几个文件。例子如下:

这个例子里 make 的编码规则如下:

a. 如果这个工程没有编译过,那么我们的所有c文件都要编译并被链接。
b. 如果这个工程的某几个c文件被修改,那么我们只编译被修改的c文件,并链接目标程序。
c. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的c文件,并链接目标程序。

在详细拆解上一节的 Makefile 之前,先来看下 Makefile 的基本范式。

target可以是一个 1) object file(可执行文件) ,2) 可执行文件 ,还可以是个3) label(标签) ,关于标签这个特性,在后面的 伪目标 章节还会有叙述。

prerequisites 就是,要生成那个target所需要的文件或是目标。 command 也就是 make 需要执行的命令,可以是任意的
shell 命令。

这是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依赖于 prerequisites 中的文件,其生成规则定义在 command 中。同时, prerequisites 中如果有一个以上的文件比target文件要新的话, command 所定义的命令就会被执行。这就是 Makefile 的规则,也是 Makefile 中 最核心 的内容。

有了这些规则后,再来分析上面的例子。在这个 makefile 中,目标文件(target)包含:

依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h 文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 的依赖文件。

在定义好依赖关系后,后续的那一行定义了如何生成目标文件的系统命令, 一定要以一个tab键作为开头 。 make 会比较
targets 文件和 prerequisites 文件的修改日期,如果 prerequisites 文件的日期要比targets文件的日期要新,或者 target 不存在的话,那么,make就会执行后续定义的命令。

我们可以把这个内容保存在名字为 makefile 或 Makefile 的文件中,然后在该目录下直接输入命令 make 就可以生成可执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下 make clean 就可以了。 注:反斜线()是换行符的意思,这样比较便于阅读。

这里要说明一点的是, clean 不是一个文件,它只不过是一个动作名字,有点像C语言中的 lable 一样,其冒号后什么也没有,那么,make就不会去找它的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令(不仅用于 clean,其他 lable 同样适用),就要在 make 命令后显式指出这个 lable 的名字。这样的方法非常有用, 我们可以在一个 makefile 中定义不用的编译或是和编译无关的命令,比如程序的打包,程序的备份 ,等等。

在默认的方式下,也就是我们只输入make命令。那么,

这就是整个 make 的依赖性,make 会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,这些都不在 make 职责范围内。

通过上述分析,我们知道,像 clean 这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要 make 执行。即命令 make clean ,以此来清除所有的目标文件,以便重编译。

在上面的例子中可以看到,后缀为 .o 的一大串文件名写了两次,这样比较费时费力,而且如果文件有所增减,要修改的地方也非常多,对以后的维护造成困难。在这种情形下,我们可以在Makefile里使用变量代替这一大串依赖文件,这里变量的使用方式基本类似于shell脚本里变量的使用方法。

我们可以在makefile一开始就这样定义:

那么接下来我们就可以很方便地在我们的Makefile中以 $(objects) 的方式来使用这个变量了,于是如果有新的 .o 文件加入,我们只需简单地修改一下 objects 变量就可以了。

GNU 的 make 很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个 .o 文件后都写上类似的命令。因为,我们的make会自动识别,并自己推导命令。

只要make看到一个 .o 文件,它就会自动的把 .c 文件加在依赖关系中,如果make找到一个 FILENAME.o ,那么 FILENAME.c ,就会是 FILENAME.o 的依赖文件。并且 cc -c FILENAME.c 也会被推导出来,于是,我们的makefile 再也不用写得这么复杂。我们的新makefile就可以这么写了。

这种方法,也就是make的**。上面文件内容中,“.PHONY”表示,clean是个伪目标文件。

热点内容
pr默认存储 发布:2024-05-05 04:29:31 浏览:553
roblox跑酷脚本怎么做 发布:2024-05-05 03:57:35 浏览:702
捷径清理缓存 发布:2024-05-05 03:57:35 浏览:479
ftputility哪里下载 发布:2024-05-05 03:47:13 浏览:1001
雷凌运动版如何连接安卓手机导航 发布:2024-05-05 03:42:48 浏览:268
自动鬼使黑脚本 发布:2024-05-05 03:10:49 浏览:880
游戏脚本编程书籍推荐 发布:2024-05-05 02:59:13 浏览:72
编译器书籍推荐 发布:2024-05-05 02:57:02 浏览:56
电池存储温度 发布:2024-05-05 02:53:07 浏览:207
安卓在美国怎么下载 发布:2024-05-05 02:31:06 浏览:925