我正在尝试使用make编译C ++程序。我希望它从src文件夹中读取源文件。将目标文件放在build文件夹中,并将exe放在bin文件夹中。
我收到以下错误
/bin/wavfiletool.exe -g -O2 process_begin:CreateProcess(NULL, /bin/wavfiletool.exe -g -O2,...)失败。 make(e = 2):系统 找不到指定的文件。
更新:问题是我把g ++放在我的编译器var而不是&(CC)... woops。
但现在它说g ++:致命错误:没有输入文件 我正在使用批处理文件运行make来设置环境变量。
SET PATH=C:\Make\GnuWin32\bin;C:\MinGW\bin
make %1
我的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=$(OBJDIR)/%.o)
$(BIN_DIR)/$(TARGET): $(OBJECTS)
$(G++) $@ $(CFLAGS) $(OBJECTS)
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
@$(CC) $(CFLAGS) -c $< -o $@
答案 0 :(得分:2)
您尚未在任何位置设置$(G++)
变量,因此$(BIN_DIR)/$(TARGET)
目标的配方行正在尝试运行$@
而不是编译器。
此外,您在该编译行上缺少-o
,因此$(G++)
设置为g++
,您最终会正常运行:
g++ /bin/wavfiletool.exe -g -O2 $(OBJECTS)
这可能不是你想要的。
据说你可能不想将直接写入/bin
。您对本地目录中的./bin
目录的意思是bin
吗?