为GLFW3编写一个make文件

时间:2017-03-21 04:20:26

标签: c macos makefile

我正在编写一个模拟器程序,我需要一个图形库。我有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

1 个答案:

答案 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-configCFLAGS变量。有关安装说明,请参阅here

因此,makefile将如下所示:

LDFLAGS