最も単純なGTKプログラムをコンパイルしたい。コマンドラインを使用してコンパイルできます:
gcc $(pkg-config --cflags --libs gtk+-3.0) main.c -o main.o
ただし、Make itが機能しない場合:
CFLAGS=-g -Wall -Wextra $(pkg-config --cflags)
LDFLAGS=$(pkg-config --libs gtk+-3.0)
CC=gcc
SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
それは私にこれを伝えます:
gcc -g -Wall -Wextra -c -o main.o main.c
main.c:1:21: fatal error: gtk/gtk.h: No such file or directory
#include <gtk/gtk.h>
^
compilation terminated.
<builtin>: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Makefileの$(pkg-config --cflags --libs gtk + -3.0)をどこに貼り付けてコンパイルしますか?
よろしくお願いします。
2つの問題があります。
まず、あなたのCFLAGS
行が間違っています:_gtk+-3.0
_の部分で_pkg-config
_と言うのを忘れたので、代わりに_pkg-config
_がエラーを吐き出します:
_CFLAGS=-g -Wall -Wextra $(pkg-config --cflags gtk+-3.0)
_
次に、より重要なのは、$(...)
が変数置換のためにmake自体によってインターセプトされることです。実際、あなたはすでにこれを見てきました:
_SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
_
すべてmakeによって行われます。
できることは2つあります。
最初に、代わりに_`...`
_を使用できます。これは同じことを行います($(...)
は新しいシェル構文です)。
_CFLAGS=-g -Wall -Wextra `pkg-config --cflags gtk+-3.0`
LDFLAGS=`pkg-config --libs gtk+-3.0`
_
2番目に、GNU makeを使用しているように見えるので、上記のリンクのBasile Starynkevitchの回答に示されているShell
置換コマンドを使用できます。
_CFLAGS=-g -Wall -Wextra $(Shell pkg-config --cflags gtk+-3.0)
LDFLAGS=$(Shell pkg-config --libs gtk+-3.0)
_