找不到ifdef命令(GNU make 3.81)

时间:2015-06-03 16:21:18

标签: gnu-make

对于一个简单的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上找到了关于此错误的一些链接,但尚未能解决此问题。

1 个答案:

答案 0 :(得分:7)

你的语法错了。你有make指令(ifdefelseendif)像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