【问题标题】:Variable substitution error变量替换错误
【发布时间】:2011-09-29 12:55:17
【问题描述】:

有人知道我的 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

【问题讨论】:

  • 你用什么命令行来调用你的 Makefile?
  • 错误消息给我的印象是您正在尝试执行 makefile,而不是调用 make
  • @Mark:该死,因为它不是 bash 脚本,如果您对 bash 脚本非常了解,您会发现它不是。在问这样的问题之前做一些基础研究。你一次都没有打开你的搜索引擎……你把一个陌生人的makefile扔给我们,希望得到一些免费的劳动力……巴杰。
  • @Mark:为了阅读“更多”内容,首先必须阅读关于它的任何内容
  • 让 cmets 保持建设性。我不会关闭它,因为它是关于主题和可回答的。 @Mark - 如果你向同行征求意见,请接受它很有礼貌

标签: makefile


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    运行make,它使用 makefile。

    【讨论】:

    • 为什么我不能单独使用 Makefile?在我看来,这就像 bash 代码。
    • @Mark:所以你承认你没有一次尝试理解或研究 makefile 背后的概念,而是把它扔给我们希望完成你的工作的代码猴子?
    • @Mark:嗯,不是。这是一个makefile。
    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 2018-01-15
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2014-07-28
    • 2016-08-15
    相关资源
    最近更新 更多