Makefile 变量替换误差

Makefile 变量替换误差,makefile,Makefile,有人知道我的Makefile有什么问题吗 CXX = g++ # compiler CXXFLAGS = -g -Wall -MMD # compiler flags MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}} # makefile name OBJECTS1 = utf.o # object files forming executable EXEC1 = utf

有人知道我的Makefile有什么问题吗

CXX = g++               # compiler
CXXFLAGS = -g -Wall -MMD        # compiler flags
MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}} # makefile name

OBJECTS1 = utf.o            # object files forming executable
EXEC1 = utf             # executable name

OBJECTS2 = driver.o rational.o # object files forming executable
EXEC2 = rational            # executable name

OBJECTS3 = da.o qa.o pa.o ua.o # object files forming executable
EXEC3 = ho          # executable name

OBJECTS = ${OBJECTS1} ${OBJECTS2} ${OBJECTS3}
EXECS = ${EXEC1} ${EXEC2} ${EXEC3}
DEPENDS = ${OBJECTS:.o=.d}      # substitute ".o" with ".d"

.PHONY : all clean

all : ${EXECS}

${EXEC1} : ${OBJECTS1}          # link step
    ${CXX} $^ -o $@

${EXEC2} : ${OBJECTS2}          # link step
    ${CXX} $^ -o $@

${EXEC3} : ${OBJECTS3}          # link step
    ${CXX} $^ -o $@

${OBJECTS} : ${MAKEFILE_NAME}       # OPTIONAL : changes to this file => recompile

-include ${DEPENDS}         # include *.d files containing program dependences

clean :                 # remove files that can be regenerated
    rm -f ${DEPENDS} ${OBJECTS} ${EXECS}
错误:

./Makefile: 1: CXX: not found
./Makefile: 2: CXXFLAGS: not found
./Makefile: 3: Bad substitution

使用
make
命令运行Makefile。您可以为make指定一个目标,比如
makeall

不要单独执行makefile。您的shell试图将其视为某种shell脚本


运行使用makefile的
make

您使用什么命令行来调用makefile?错误消息给我的印象是您试图执行makefile,而不是调用
make
@Mark:Dammit,因为它不是bash脚本,如果您熟悉bash脚本,您可以看到它不是bash脚本。在提出这样的问题之前做一些基础研究。你没有一次打开过你的搜索引擎。。。你向我们扔了一个陌生人的makefile期望得到一些免费的劳动力。。。马克:为了对某件事读“更多”,首先必须读过关于它的任何东西。让我们保持有建设性的评论。我不会结束这篇文章,因为它是关于主题和责任的@马克-拜托,如果你征求同龄人的意见,接受它是很礼貌的。为什么我不能单独使用Makefile呢?在我看来,这就像是bash代码。@Mark:那么你承认你一次也没有尝试过理解或研究makefile背后的概念,但却把它扔给了我们这些希望完成你工作的代码猴子们?@Mark:嗯,不是。它是一个生成文件。