我正在编写一个模拟器程序,我需要一个图形库。我有4个文件,图形库GLWF3安装在我的include文件夹中。我正在使用MacOs Yosemite。我无法弄清楚如何使makefile工作,但包含glfw3库。提前致谢! 另请注意,包含GLWF3的唯一文件是graphics.h 的生成文件
OBJ = graphics.o chip8.o
emulator: $(OBJ)
gcc -o emulator $(OBJ)
graphics.o: graphics.c graphics.h
gcc -c graphics.c
chip8.o: chip8.c chip8.h
gcc -c chip8.c
clean:
rm -f $(OBJ) emulator
答案 0 :(得分:2)
要使用给定的库进行构建,您必须:
<强>汇编强>
要说明标题的位置,您必须将-I/path/to/dir
选项传递给gcc
。通常,make CFLAGS
变量用于执行此操作:
CFLAGS= -I/path/to/glwf/include/dir
graphics.o: graphics.c graphics.h
gcc -c graphics.c $(CFLAGS)
chip8.o: chip8.c chip8.h
gcc -c chip8.c
链接强>
要告诉链接器使用哪个库及其所在位置,请使用选项-L/path/to/sofile
和-lthelib
。通常在LDFLAGS
变量中:
警告 要要链接的文件(* .o文件)后,<{1}}选项必须
-l
<强> LDFLAGS = -L/path/to/libglwf/lib/dir
# if the so file name is "libglwf3.so", the "-l" option must be "-lglwf3"
LDFLAGS += -lglwf3
emulator: $(OBJ)
gcc -o emulator $(OBJ) $(LDFLAGS)
强>
为了不必处理路径,您可以使用pkg-config
工具:此工具可帮助您设置pkg-config
和CFLAGS
变量。有关安装说明,请参阅here。
因此,makefile将如下所示:
LDFLAGS