我有一个非常简单的makefile,如下所示
FRUIT = apple orange
all : $(FRUIT)
$(FRUIT) :
ifeq ($(@),apple)
@echo "APPLE!"
else
@echo "ORANGE!"
endif
当我执行
make all
我明白了
ORANGE!
ORANGE!
我已经检查了我的标签,我相信我在ifeq上的间距是正确的。我错过了什么?
在GNU中,添加到变量赋值后的注释会阻止后续比较(通过ifeq)正确工作。
这是Makefile..。
A = a
B = b ## trailing comment
C = c
RESULT :=
ifeq "$(A)" "a"
RESULT += a
endif
ifeq "$(B)" "b"
RESULT += b
endif
ifeq "$(C)" "c"
RESULT += c
endif
rule:
@echo RESULT=\"$(
我在Makefile中有以下内容:
ifndef MYVAR
$(error "MYVAR is not set")
else
$(warning "MYVAR is set to [$(MYVAR)]")
ifeq ($(MYVAR),"abc")
$(error "Value is known.")
else
$(error "Not known.")
endif
endif
我在调用make时设置了MYVAR:
MYVAR=abc make
我本希望看到“价值是已知的”。但我得到了以下信息:
Makefile
我希望makefile中包含以下行为:
if the current user is "dev-builder":
CACHE_DIR=/nfs/artifacts
else
CACHE_DIR=
endif
在我的Makefile中,我有这样的东西:
ifeq($$USER,"dev-builder")
CACHE_DIR_FLAG="--output_base=/nfs/artifacts"
endif
mytarget:
bazel $(CACHE_DIR_FLAG) build (other args)
但是,make发出的
在尝试构建wxWidgets 3.1.0库时,我会收到以下错误
ar: gcc_mswu\moolib_fontmap.o: No such file or directory
文件的拼写略有不同。
Directory of C:\Users\James\code\wxwidgets-3.1.0\build\msw\gcc_mswu
2017-01-05 02:01 PM 98,886 monolib_fontmap.o
它看起来像是makefile中的一个错误,或者像一个读makefile的字母被错过了。这有可能吗?
但是:如果我将控制台输出重定向到文件并在编辑器