[英]Making a Makefile for C++ project
好的,我在 Windows 中为 C++ 项目制作 MakeFile 时遇到问题。 我四处查看并找到了一些教程,这就是我得到的:
IDIR =../include
CC = g++
CFLAGS=-I$(IDIR)
ODIR = obj
LDIR =../lib
LIBS = -lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system
_DEPS = Button.hpp
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = Test.o Button.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
Test.exe: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~
这是弹出的错误信息:make: *** No rule to make target 'obj/Test.o', required by 'Test.exe'。 停止。
编辑:
嗨,我的 makefile 仍然有问题。 关键是我的项目文件夹很乱,我想保持整洁。 我的 make 文件无法跨多个目录工作。 现在我所有的 cpp 文件、头文件和目标文件都集中在一个文件夹中,并且可以正常工作,但是由于我向程序中添加了更多内容,因此变得混乱。 我设法使它在一个目录中有标题但对象有问题,因此我再次寻求帮助。
这是我现在的 Makefile:
IDIR = Headers
ODIR = obj
CC = g++
CPPFLAGS = -I$(IDIR) $(LIBS)
LIBS = -lm -lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system
_DEPS = Button.hpp TextBox.hpp TextToWindow.hpp MessageBox.hpp CheckBox.hpp
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = Button.o TextBox.o TextToWindow.o MessageBox.o CheckBox.o Test.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.cpp $(DEPS)
$(CC) -c -o $@ $< $(CPPFLAGS)
Test.exe: $(OBJ)
$(CC) -o $@ $^ $(CPPFLAGS)
.PHONY: clean
clean:
del $(ODIR)*.o *.exe
这是我的工作目录:
MainDir:
-Headers:
-hpp
-hpp
.
.
-cpp
-o
-cpp
.
.
它适用于标头,但无法在该目录中创建对象,因此出现错误:
make: *** No rule to make target 'obj/Button.o', needed by 'Test.exe'. Stop.
好的,所以我这样做了,它可以工作,但我仍然无法让它在多个目录中工作。
CC = g++
CPPFLAGS = -I $(LIBS)
LIBS = -lm -lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system
DEPS = Button.hpp TextToWindow.hpp
OBJ = Test.o Button.o TextToWindow.o
%.o: %.cpp $(DEPS)
$(CC) -c -o $@ $< $(CPPFLAGS)
Test.exe: $(OBJ)
$(CC) -o $@ $^ $(CPPFLAGS)
.PHONY: clean
clean:
rm -f /*.o *~ core /*~
哦,清洁功能不起作用。 如果有人可以提出更好的方法,请这样做。 谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.