【问题标题】:makefile "no such file or directory"makefile“没有这样的文件或目录”
【发布时间】: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++ 命令。 (并使用代码格式而不是引号格式,因此请不要破坏换行符。)

标签: makefile gnu-make


【解决方案1】:

除非您的所有目录(即 BIN_DIR、SRC_DIR)都在根目录 (/) 中,否则这就是您收到错误的原因。您要么想要删除初始斜线,要么可以使用环境变量前缀,如 SRC_DIR = $(MY_PROJECT_BASE_DIRECTORY)/src

【讨论】:

  • 我删除了“/”字符。它仍然给出同样的错误。
猜你喜欢
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2018-03-24
  • 2012-08-05
  • 1970-01-01
相关资源
最近更新 更多