对于一个简单的helloWorld程序,我有以下makefile
:
helloWorld: helloWorld.cpp
echo "Argument entered is $(foo)"
ifdef foo
echo "Defined.";
else
echo "Not defined.";
endif
g++ -Wall -pedantic -g helloWorld.cpp -o h
当我从命令行调用make
时:make foo=bar
,我收到以下错误:
bar
"not set"
echo "Argument entered is bar"
Argument entered is bar
ifdef foo
make: ifdef: Command not found
make: *** [helloWorld] Error 127
我已经在SO上找到了关于此错误的一些链接,但尚未能解决此问题。
答案 0 :(得分:7)
你的语法错了。你有make指令(ifdef
,else
和endif
)像shell命令一样缩进。
请参阅GNU make手册中的Example of a Conditional,了解如何做到这一点。
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif