2017-03-21 4 views
1

私はエミュレータプログラムを書いています。グラフィックスライブラリが必要です。私は4つのファイルを持って、グラフィックスライブラリGLWF3が私のインクルードフォルダにインストールされています。私はMacosのヨセミテを使っています。私はglfw3ライブラリをインクルードするためにmakefileを動作させる方法を理解できません。前もって感謝します! はまた、特定のライブラリを構築するにはgraphics.h MakefileのGLFW3のメイクファイルを書く

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

あなただけのgcc自体ではなく、メイクファイルで使用していた場合、あなたがそれを行うだろうか?初心者のために、makefileで同じ方法で行います。 –

答えて

1

で、あなたがする必要があるGLWF3を含むファイルのみを注意してください。

  • は、ライブラリのヘッダファイル
  • を見つける方法をコンパイラに伝えます
  • リンクする必要があるライブラリをリンカーに伝えます。

ヘッダです、あなたはgcc-I/path/to/dirオプションを渡す必要がある場合に通知するためにコンパイル

。使用するにはどのようなライブラリリンカを伝えるために

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が使用されています。多くの場合、メイクCFLAGS変数は、そうするために使用されます。通常LDFLAGS変数に:

警告:-lオプションはリンクに後のファイルを来なければならない(* .oファイル)

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ツールを使用することができます:このツールはCFLAGSLDFLAGS変数を設定するのに役立ちます。したがって、インストール手順についてhere ...

を参照してください、あなたはメイク意志は次のようになります。

OBJ = graphics.o chip8.o 
# calling program "pkg-config" and store result in CFLAGS variable 
CFLAGS = $(shell pkg-config --cflags glfw3) 
# calling program "pkg-config" and store result in LDFLAGS variable 
LDFLAGS = $(shell pkg-config --ldflags glfw3) 

emulator: $(OBJ) 
    gcc -o emulator $(OBJ) $(LDFLAGS) 

graphics.o: graphics.c graphics.h 
    gcc $(CFLAGS) -c graphics.c 

chip8.o: chip8.c chip8.h 
    gcc $(CFLAGS) -c chip8.c 

clean: 
    rm -f $(OBJ) emulator 
+0

ありがとう、それは今働く! – Steven

関連する問題