【发布时间】:2016-01-10 15:02:32
【问题描述】:
我正在尝试使用 make 编译 C++ 程序。在阅读了很多教程之后,我找到了以下make文件。
从 src 目录读取源文件,将对象放入 build 目录,将 exe 放入 bin 目录。
当我尝试运行以下 makefile 时,我收到了后续错误。
CC := g++
CFLAGS := -g -O2
BIN_DIR := /bin
BUILD_DIR := /build
SRC_DIR := /src
TARGET := wavfiletool.exe
SOURCES := $(wildcard $(SRC_DIR)/*.c)
OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(BUILD_DIR)/%.o)
$(BIN_DIR)/$(TARGET): $(OBJECTS)
$(CC) $@ $(CFLAGS) $(OBJECTS)
$(OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.c
@$(CC) $(CFLAGS) -c $< -o $@
++ /bin/wavfiletool.exe -g -O2 g++: 错误: /bin/wavfiletool.exe: 没有这样的文件或目录 g++: 致命错误: 没有输入文件编译 终止。 make: *** [/bin/wavfiletool.exe] 错误1 [0.1s完成 退出代码 2]
更新:
我已经编辑了makefile。以前版本中的一个错字是我在使用 .cpp 和 c++ 时有 .c。我现在遇到了另一个错误。
更新的 MAKEFILE
CC := g++
CFLAGS := -g -O2
BIN_DIR := bin
BUILD_DIR := build
SRC_DIR := src
TARGET := wavfiletool.exe
SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(BUILD_DIR)/%.o)
$(BIN_DIR)/$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) $(CFLAGS) -o $@
$(OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp
@$(CC) $(CFLAGS) -c $< -o $@
新错误
makefile:13: target `src/WavFile.cpp' doesn't match the target pattern
makefile:13: target `src/WavFileTool.cpp' doesn't match the target pattern
g++ src/WavFile.cpp src/WavFileTool.cpp -g -O2 -o bin/wavfiletool.exe
【问题讨论】:
-
My answer on your previous question 涵盖了这些问题。我介绍了您的 makefile 的三个问题。不正确的变量只是其中之一。此外,如果我的回答是正确的,您应该接受它(而不是编辑您的问题以表明您找到了解决方案)。
-
我查看了您对另一个错误的回答,但即使正确添加了 -o,此错误仍然存在。
-
更新帖子并添加新的 makefile(带有斜线修复和
-o修复)并向我们展示新的错误输出。极不可能是相同的错误。请包括运行make的整个 输出包括 调用make本身和失败的g++命令。 (并使用代码格式而不是引号格式,因此请不要破坏换行符。)