2015-10-15 56 views
1
# Compiler to use 
CC = g++ 

# flags to pass compiler 
CFLAGS = -ggdb3 -O0 -std=c99 -Wall -Werror 

# Name for the executable 
EXE = test 

# space-separated list of header files 
HDRS = simplegui.h globals.h timer.h tile.h gamesprites.h 

# space-separated list of libraries, if any, 
# each of which should be prefixed with -l 
LIBS = -lSDLmain -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf 

# space-separated list of source files 
SRCS = main.cpp gamesprites.cpp simplegui.cpp tile.cpp timer.cpp 

# automatically generated list of object files 
OBJS = $(SRCS:.cpp=.o) 

# default target 
$(EXE): $(OBJS) $(HDRS) Makefile 
    $(CC) -IC:\SDL-1.2.15\include -LC:\SDL-1.2.15\lib $(CFLAGS) -o [email protected] $(OBJS) $(LIBS) 

# dependencies 
$(OBJS): $(HDRS) Makefile 

它不能与makefile一起使用。我的另一种方法是:如何编译g ++多个文件(它不适用于我)

g++ -IC:\SDL-1.2.15\include -o test main.cpp -LC:\SDL-1.2.15\lib -lSDLmain -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer 

它的工作开始,我不知道我变了,没有它是不行的,它不断地说,它并没有找到该目录。以前它确实找到了目录,但是向我大吼大叫依赖关系。我很沮丧找不到答案。如何编译一个包含许多.h .cpp文件的程序,并且在其他目录中包含.h文件?这两种方法我发现,工作......(不过,我可以用我的IDE被配置编译代码,但我不记得了,我很快就会格式化我的电脑

编辑:

enter image description here

enter image description here

enter image description here

编辑:更改\为/,现在我有这样的:

enter image description here

+0

++命令你的摹给了看似合理,乍看之下。你能澄清你遇到的一些问题吗? “它一直告诉我,它没有找到目录” - 它找不到哪个目录?你有没有检查目录是否存在? –

+0

是的,该目录存在。这就是我在IDE中配置编译器和链接器的方式。但我需要知道如何从命令行或使用makefile进行编译。它一直告诉我它没有找到“SDL/SDL.h”。但是,在我的电脑C:\ SDL-1.2.15 \ include中包含SDL文件夹,其中SDL.h与链接器目录相同。当我可以“编译”时,它只是因为依赖而对我大喊大叫(我没有使用所有的源代码)。然而,即使添加了所有它一直抛出的错误(现在它甚至不能用g ++)。我也有头没有cpps – dpalma

+0

我认为它不喜欢'$(EXE):$(OBJS)$(HDRS)Makefile',因为$(HDRS)是'simplegui.h globals.h timer.h tile .h gamesprites.h',但它们不存在于当前目录中。但没有实际的错误信息,我只是猜测。 –

回答

0

不是最好的解决方案,但我是一个傻瓜。我有“多余”的代码,当我写了下面的Makefile它被认为是固定的:

# Compilador a utilizar 
CC = g++ 

# Libraries 
LIBS = -lmingw32 -lSDLmain -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer 

# Codigo 
SRC = main.cpp timer.cpp simplegui.cpp gamesprites.cpp 

# Object files 
OBJS = $(SRC:.cpp=.o) 

# Nombre del ejecutable 
EXE = juego_naves 

all: $(SRC) $(EXE) 

$(OBJS): 
    g++ -IC:/SDL-1.2.15/include -c $(SRC) 

$(EXE): $(OBJS) 
    g++ -LC:/SDL-1.2.15/lib -o [email protected] $(OBJS) $(LIBS) 

clean: 
    rm -rf *.o $(EXE).exe