繁体   English   中英

为 C++ 项目制作 Makefile

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM