【问题标题】:Problem compiling just 1 cpp file: "make: *** No rule to target 'build/main.o, needed by 'executable'. Stop."仅编译 1 个 cpp 文件时出现问题:“make: *** No rule to target 'build/main.o, required by 'executable'. Stop.”
【发布时间】:2020-01-25 17:33:38
【问题描述】:

我正在编写我能想到的最基本的makefile,只编译一个main.cpp。我尝试了从阅读类似问题中可以找到的所有建议,但我仍然无法确定我的问题。常见的错误是使用空格而不是制表符,我也检查过。

整个项目布局如下:

/bin
/build
/src
  |-----main.cpp
/Makefile

main.cpp 只打印“hello world”。

Makefile 包含以下内容:

CXX = g++
WARNINGS = -Wall
OBJ = -c
OUTPUT = -o 
BIN = bin
BUILD = build
SOURCE = src

executable:${BUILD}/main.o
    ${CXX} ${WARNINGS} ${OUTPUT} ${BIN}/program ${BUILD}/main.o
    #c++ -wall -o bin/program src/main.o

main.o: ${SOURCE}/main.cpp
    ${CXX} ${WARNINGS} ${OBJ} ${OUTPUT} ${BUILD}/main.o ${SOURCE}/main.cpp

如您所见,有构建 main.o 的说明!如果我不使用 makefile 变量并清楚地编写命令(注释掉的行),它就可以工作。

没有丢失的文件。这是 main.cpp 存在的证据

【问题讨论】:

    标签: c++ makefile


    【解决方案1】:

    您的解决方案: 将 main.o 更改为 ${BUILD}/main.o 然后 make 命令可以关联它

    CXX = g++
    WARNINGS = -Wall
    OBJ = -c
    OUTPUT = -o 
    BIN = bin
    BUILD = build
    SOURCE = src
    
    executable:${BUILD}/main.o
        ${CXX} ${WARNINGS} ${OUTPUT} ${BIN}/program ${BUILD}/main.o
    
    ${BUILD}/main.o: ${SOURCE}/main.cpp          #<------ watch this line
        ${CXX} ${WARNINGS} ${OBJ} ${OUTPUT} ${BUILD}/main.o ${SOURCE}/main.cpp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 2021-03-13
      • 2016-11-19
      • 2016-06-07
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多