我在跟随一个创建简单乒乓球游戏的教程,并想尝试使用makefile。我进行了一些研究并写了一个,但我无法使其正常工作。
这是我的项目文件夹的样子。
这是我的Makefile文件:
当我运行make命令时,会得到以下输出:
SFML 之前好像是正常工作的,所以我想它不是问题所在。
任何帮助都将是非常棒的!
这是我的项目文件夹的样子。
project/
|__include/
| |__*.h
|__release/
| |__obj/
| |__Makefile
|__src/
|__*.cpp
这是我的Makefile文件:
CXX := g++
# Directories
SDIR := ../src
IDIR := ../include
ODIR := ./obj
VPATH := $(SDIR)
# Files
_SRCS := stdafx.cpp Pang.cpp Game.cpp MainMenu.cpp SplashScreen.cpp
SRCS := $(patsubst %,$(SDIR)/%,$(_SRCS))
_DEPS := stdafx.h Game.h MainMenu.h SplashScreen.h
DEPS := $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJS := $(_SRCS:.cpp=.o)
OBJS := $(patsubst %,$(ODIR)/%,$(_OBJS))
EXES := Pang
# Parameters
CXXFLAGS := -O2 -g -Wall -fmessage-length=0
LIBS := -lsfml-audio -lsfml-graphics -lsfml-window -lsfml-system
# Default rule
all: $(SRCS) $(EXES)
# Generic compilation rule
$(ODIR)%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# Link object files
$(EXES): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
# Clean Rule
clean:
rm -f $(ODIR)/*.o $(EXES)
当我运行make命令时,会得到以下输出:
make all
make: *** No rule to make target `obj/stdafx.o', needed by `Pang'. Stop.
SFML 之前好像是正常工作的,所以我想它不是问题所在。
任何帮助都将是非常棒的!
remake -x
来调试您的 makefile 问题。您也可以使用更好的构建工具,例如 http://omake.metaprl.org/。 - Basile Starynkevitchstdafx.cpp
文件吗? - Michał Górnyinclude
?它应该在src
内遵循这些规则(注意.cpp
而不是.h
)。 - Michał Górny