我在使用C Makefile时遇到了一些麻烦 . 当我在打开项目文件时进行压缩时会发生这种情况 .
这是错误:
[警告]覆盖目标
DuLieuNganHang.o'[警告]的配方,忽略目标
DuLieuNganHang.o'的旧配方'g .exe [警告]链接器输入文件未使用,因为链接未完成g .exe g .exe D:\ TinNC \ MRT \ g .exe DuLieuNganHang.o:没有这样的文件或目录 . g .exe g .exe D:\ TinNC \ MRT \ g .exe DuLieuNganHang.o:没有这样的文件或目录 . D:\ TinNC \ MRT \ Makefile.win [错误] [MRT.exe]错误1
以下是Makefile的内容:
# Project: MRT
# Makefile created by Dev-C++ 5.3.0.4
CPP = g++.exe -D__DEBUG__
CC = gcc.exe -D__DEBUG__
WINDRES = windres.exe
OBJ = main.o MRT.o TaiKhoan.o Tien.o HoaDon.o GiaoDich.o NhatKyGiaoDichMRT.o DuLieuNganHang.o PhanCung.o DuLieuNganHang.o $(RES)
LINKOBJ = main.o MRT.o TaiKhoan.o Tien.o HoaDon.o GiaoDich.o NhatKyGiaoDichMRT.o DuLieuNganHang.o PhanCung.o DuLieuNganHang.o $(RES)
LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -g3
INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include"
CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include"
BIN = MRT.exe
CXXFLAGS = $(CXXINCS) -g3
CFLAGS = $(INCS) -g3
RM = rm -f
.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
MRT.o: MRT.cpp
$(CPP) -c MRT.cpp -o MRT.o $(CXXFLAGS)
TaiKhoan.o: TaiKhoan.cpp
$(CPP) -c TaiKhoan.cpp -o TaiKhoan.o $(CXXFLAGS)
Tien.o: Tien.cpp
$(CPP) -c Tien.cpp -o Tien.o $(CXXFLAGS)
HoaDon.o: HoaDon.cpp
$(CPP) -c HoaDon.cpp -o HoaDon.o $(CXXFLAGS)
GiaoDich.o: GiaoDich.cpp
$(CPP) -c GiaoDich.cpp -o GiaoDich.o $(CXXFLAGS)
NhatKyGiaoDichMRT.o: NhatKyGiaoDichMRT.cpp
$(CPP) -c NhatKyGiaoDichMRT.cpp -o NhatKyGiaoDichMRT.o $(CXXFLAGS)
DuLieuNganHang.o: DuLieuNganHang.cpp
$(CPP) -c DuLieuNganHang.cpp -o DuLieuNganHang.o $(CXXFLAGS)
PhanCung.o: PhanCung.cpp
$(CPP) -c PhanCung.cpp -o PhanCung.o $(CXXFLAGS)
DuLieuNganHang.o: DuLieuNganHang.txt
$(CPP) -c DuLieuNganHang.txt -o DuLieuNganHang.o $(CXXFLAGS)
谢谢!
1 回答
答案在于你的警告:
[警告]重写目标`DuLieuNganHang.o'的食谱
[警告]忽略目标`DuLieuNganHang.o'的旧配方
这告诉你,有些观点是检测如何构建DuLieuNgangHang.o的第二个配方,并且忽略了第一个配方 .
查看你的makefile,第一条规则是从DuLieuNganHang.cpp Build DuLieuNganHang.o . 第二个配方说是从DuLieuNganHang.txt构建它 . 鉴于您的错误消息说DuLieuNganHang.o不存在,您可能没有文件DuLieuNganHang.txt(否则我会在尝试将文本文件解析为c文件时出现编译器错误) .
您应该可以通过删除DuLieuNganHang.o的第二条规则来解决您的问题 .