Makefile,在可执行文件中声明变量
对于像我这样的新手来说,这是一个简单的问题,但是我能做些什么来像下面这样呢Makefile,在可执行文件中声明变量,makefile,Makefile,对于像我这样的新手来说,这是一个简单的问题,但是我能做些什么来像下面这样呢 all: run run: DIR=bin/ $(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)$@ 谢谢。为什么不这样去呢 DIR=bin/ all: $(DIR)/run $(DIR)/run: $(CC) $(LIBRARY) $(INCLUDE) run.o -o $@ 如前所述,您在一个命令行上为shell变量DIR赋值。在
all: run
run:
DIR=bin/
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $(DIR)$@
谢谢。为什么不这样去呢
DIR=bin/
all: $(DIR)/run
$(DIR)/run:
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $@
如前所述,您在一个命令行上为shell变量
DIR
赋值。在下一行,您有一个make
变量DIR
的扩展。这不起作用,因为这两行由不同的shell执行,并且在任何情况下,make
在运行shell之前展开$(DIR)
,并且DIR
不是make
变量
你可以这样做:
all: run
run:
DIR=bin/; \
$(CC) $(LIBRARY) $(INCLUDE) run.o -o $${DIR}$@
反斜杠表示两行被视为一行(如此之多以至于需要分号)。$${DIR}
表示法通过make
扩展为${DIR}
(更准确地说,$$
扩展为$
,并且make
忽略{DIR}
),然后shell从前面设置的值扩展为${DIR}
。当然,你可以省略大括号
但是,by可能就是您要查找的对象。实际上,我知道如何在make文件上使用多个独立目标。非常感谢你,贝塞克也一样。