修正前两章书写失误
This commit is contained in:
parent
4abde6d82e
commit
8cc197ac78
@ -9,7 +9,7 @@ make命令执行时,需要一个makefile文件,以告诉make命令需要怎
|
|||||||
#. 如果这个工程的某几个c文件被修改,那么我们只编译被修改的c文件,并链接目标程序。
|
#. 如果这个工程的某几个c文件被修改,那么我们只编译被修改的c文件,并链接目标程序。
|
||||||
#. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的c文件,并链接目标程序。
|
#. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的c文件,并链接目标程序。
|
||||||
|
|
||||||
只要我们的makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。
|
只要我们的makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自动编译所需要的文件和链接目标程序。
|
||||||
|
|
||||||
makefile的规则
|
makefile的规则
|
||||||
--------------
|
--------------
|
||||||
|
@ -228,7 +228,7 @@ vapth使用方法中的<pattern>需要包含 ``%`` 字符。 ``%`` 的意思是
|
|||||||
多目标
|
多目标
|
||||||
------
|
------
|
||||||
|
|
||||||
Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令不是同一个,这可能会可我们带来麻烦,不过好在我们可以使用一个自动化变量 ``$@`` (关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。
|
Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令不是同一个,这可能会给我们带来麻烦,不过好在我们可以使用一个自动化变量 ``$@`` (关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。
|
||||||
|
|
||||||
.. code-block:: makefile
|
.. code-block:: makefile
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ prereq-parrterns是目标的依赖模式,它对target-parrtern形成的模式
|
|||||||
bar.o : bar.c
|
bar.o : bar.c
|
||||||
$(CC) -c $(CFLAGS) bar.c -o bar.o
|
$(CC) -c $(CFLAGS) bar.c -o bar.o
|
||||||
|
|
||||||
试想,如果我们的 ``%.o`` 有几百个,那么我们只要用这种很简单的“静态模式规则”就可以写完一堆规则,实在是太有效率了。“静态模式规则”的用法很灵活,如果用得好,那会一个很强大的功能。再看一个例子:
|
试想,如果我们的 ``%.o`` 有几百个,那么我们只要用这种很简单的“静态模式规则”就可以写完一堆规则,实在是太有效率了。“静态模式规则”的用法很灵活,如果用得好,那会是一个很强大的功能。再看一个例子:
|
||||||
|
|
||||||
.. code-block:: makefile
|
.. code-block:: makefile
|
||||||
|
|
||||||
@ -374,4 +374,4 @@ gcc -MM main.c的输出则是::
|
|||||||
|
|
||||||
include $(sources:.c=.d)
|
include $(sources:.c=.d)
|
||||||
|
|
||||||
上述语句中的 ``$(sources:.c=.d)`` 中的 ``.c=.d`` 的意思是做一个替换,把变量 ``$(sources)`` 所有 ``.c`` 的字串都替换成 ``.d`` ,关于这个“替换”的内容,在后面我会有更为详细的讲述。当然,你得注意次序,因为include是按次来载入文件,最先载入的 ``.d`` 文件中的目标会成为默认目标。
|
上述语句中的 ``$(sources:.c=.d)`` 中的 ``.c=.d`` 的意思是做一个替换,把变量 ``$(sources)`` 所有 ``.c`` 的字串都替换成 ``.d`` ,关于这个“替换”的内容,在后面我会有更为详细的讲述。当然,你得注意次序,因为include是按次序来载入文件,最先载入的 ``.d`` 文件中的目标会成为默认目标。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user