makefile“没有这样的文件或目录”

时间:2015-10-13 01:55:15

标签: makefile gnu-make

我正在尝试使用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 ++:error:/bin/wavfiletool.exe:没有这样的文件或目录g ++:致命错误:没有输入文件编译   终止。 make:*** [/bin/wavfiletool.exe]错误1 [以0.1秒完成   退出代码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 

1 个答案:

答案 0 :(得分:1)

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