请根据以下内容写出Makefile,要求使用变量(宏)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请根据以下内容写出Makefile,要求使用变量(宏)相关的知识,希望对你有一定的参考价值。

1.某项目中有以下源代码:
Main.c,a.c,b.c,d.c,e.c,mylib.c mylib.h
头文件myinclude.h 所在路径 /home/nks/myinclude
自定义库函数mylib.a 由mylib.c及mylib.h生成,mylib.a存放在/home/nks/mylib目录下
编译器使用/home/nks/gcc/目录下的nks-gcc
静态库生成工具在/home/nks/ar/nks-ar

参考技术A 首先你没说明Main.c,a.c,b.c,d.c,e.c,mylib.c mylib.h 这些文件之间的包函关系,你最好能把nks整个文件夹发过来, 不然我无法确定是否能写成功. 参考技术B #!/bin/sh

BIN = exam
SRC = Main.c a.c b.c d.c e.c
LIB_SRC = mylib.c
LIB_OBJ = mylib.o
CFLAGS = -g -Wall -Werror
LIB = mylib.a
INC = .
GCC = /home/nks/gcc/nks-gcc
AR = /home/nks/ar/nks-ar
LIB_DIR = /home/nks/mylib/
LIB_INC_DIR = /home/nks/myinclude

all:lib $(BIN)

$(BIN):$(SRC)
$(GCC) $(CFLAGS) -o $@ $^ -I$(INC) $(LIB_DIR)$(LIB)
lib:
$(GCC) -c $(LIB_SRC) -I$(LIB_INC_DIR)
$(AR) -rc $(LIB) $(LIB_OBJ)
clean:
rm -rf $(BIN) *.o本回答被提问者采纳
参考技术C 看起来好难~

Makefile引用与环境变量

参考技术A 一个makefile中引用另一个makefile,其写法与C语言include 类似。
make 命令开始时,会搜寻 include 所包含的其它 Makefile,并把其内容安置在当前的位置。

使用隐晦规则来书写makefile

Makefile.hello

运行结果:

Makefile文件可以使用其他命名来区分,如Makefile.hello,如果要单独执行Makefile.hello,只需要make -f Makefile.hello 或者 make --file Makefile.hello

include 其他makefile可包含路径,如果没有路径。

如果找不到该文件,报错。

如果打算无法找到Makefile.hello文件也要进行执行下去,只需在include前加个减号

make会继续执行下去。

书中提到:但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用 make 时,所有的 Makefile 都会受到它的影响,这绝不是你想看到的。在这里提这个事,只是为了告诉大家,也许有时候你的 Makefile 出现了怪事,那么你可以看看当前环境中有没有定义这个变量。

环境变量和自定义变量 -》类似于“全局变量”和“局部变量”
创建个环境变量CWR

通过env来查看所有环境变量

Makefile中输出该变量

@ 作用关闭命令回显
运行结果:

在Makefile中定义该变量

运行结果:

系统环境变量值被覆盖。
书中反复强调:不推荐把许多的变量都定义在系统环境中,这样,在我们执行不用的Makefile 时,拥有的是同一套系统变量,这可能会带来更多的麻烦。

不过我看很多厂商在编译系统镜像前,都会先source 一下厂商写的环境变量脚本。估计也是为了让每个模块共通的部分集中在环境变量中,使得模块的Makefile看起来更简洁更容易阅读。

以上是关于请根据以下内容写出Makefile,要求使用变量(宏)的主要内容,如果未能解决你的问题,请参考以下文章

Makefile编写

使用自动变量编译 Makefile

请根据给出的数据库表的结构和要求,写出相应的Sql语句

请根据给出的数据库表的结构和要求,写出相应的Sql语句。

请根据给出的数据库表的结构和要求,写出相应的Sql语句。

Makefile