问题仅编译1个cpp文件:“ make:***'rules'不需要任何针对'build / main.o'的规则。停止。”

问题描述 投票:1回答:1

我正在编写我能想到的最基本的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存在enter image description here

c++ makefile
1个回答
0
投票

您的解决方法:将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
© www.soinside.com 2019 - 2024. All rights reserved.