Makefile当中宏定义传递字符串 前几天遇到类似的问题[http://bbs.chinaunix.net/thread-1589386-1-1.html]: 在Makefile里面定义一个字符串在程序里面使用, CFLAGS += -DMY_PATH=/etc/mycfg CFLAGS += -DMY_PATH="/etc/mycfg" 上面两种写法都不行。 正确的写法如下: CFLAGS += -DMY_PATH=\"\"...
如果宏定义为一个数字,例如12,这样编译是可以的,代码中也能识别该宏。 但是,如果想要传递字符串,在Makefile中需要注意,需要使用转义,如下: 1C_FLAGS := -DTEST_MACRO_HEHE=\"abcd1234\"2test: test.o3gcc -o $@ $^4test.o: test.c5gcc $(C_FLAGS) -c -o $@ $< -Iinclude6clean:7rm -f *...
在Makefile中,可以使用宏来定义一些常量或者预处理指令,以便在编译过程中使用。 在Makefile中定义C宏的语法如下: 代码语言:txt 复制 MACRO_NAME = value 其中,MACRO_NAME是宏的名称,value是宏的值。宏的名称通常使用大写字母表示,以便与变量区分。宏的值可以是一个字符串,也可以是一个表达式。 定义了宏之后,可以...
在gcc编译器中, -E是宏替换阶段。同时⼜制定了-D参数时,会将-D 参数后的字符串最为宏名定义在指定的⽂件。例如:-DXXX_X__ <===> -D XXX_X__ <===> #define XXX_X__ 1 -D XXX_X__=strings < === > -DXXX_X__=strings <===> #define XXX_X__strings 在⼀些特别的场合...
make命令将$(CC) 、$(INCLUDE)和$(CFLAGS)替换为相应的宏定义,这与C语言编译器对#define语句的处理方式很相似。现在,如果想改变编译器命令,只需要修改makefile文件中的一行即可。 在makefile文件中,还可以看到下面两个有用的特殊字符,它们出现在命令之前。 - :告诉make命令忽略所有错误。 @:告诉make在执行某条...
b.obj: b1.c b2.c gcc -c b1.c b2.c -o b.obj 这就是makefile的工作方法。关于宏定义,简单点说就是文本替换。为了方便使用不同的编译器或者编译环境以及硬件环境,一些复杂的软件使用了大量的宏定义来代替诸如“gcc”这样的最基本的东西。不要太在意红定义,多看,从简单的看起,就会了。
宏用另一个字符串替换生成文件中的特定字符串。使用宏可以: 创建可生成不同项目的生成文件。 指定命令选项。 设置环境变量。 可以定义您自己的宏或使用 NMAKE 的预定义宏。 d.推理规则 推理规则提供命令来更新目标并推理目标的依赖项。推理规则中的扩展名与具有相同基名称的单个目标和依赖项匹配。推理规则是用户定义...
返回:函数返回被替换过后的字符串 示例: $(subst a,the,There is a big tree), 把“There is a big tree”中的“a”替换成“the”,返回结果是“There is the big tree” notdir:去除路径,仅保留文件名称,返回文件名的list = 使用时展开后赋值,类似宏定义=: 立即赋值,类似变量 ...