Comment utiliser pkg-config à Faire
Je veux compiler le plus simple GTK programme.
Je peux le compiler en utilisant la ligne de commande:
gcc $(pkg-config --cflags --libs gtk+-3.0) main.c -o main.o
Cependant, si j'utilise Faire cela ne fonctionne pas:
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)
Il me dit ceci:
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
Où puis-je coller $(pkg-config --cflags --libs gtk+-3.0) dans le fichier Makefile pour faire de la compilation?
Merci beaucoup d'avance pour votre aimable aide.
Répondu here
Pas tout à fait; ce n'montrer un correctif si vous regardez assez dur. Garder ce commentaire, de toute façon.
Plus une alternative que d'une réponse, mais peut-être vous pouvez envisager d'utiliser CMake au lieu de la plaine des Makefiles. Il a une bien meilleure syntaxe et est multi-plateforme.
Pas tout à fait; ce n'montrer un correctif si vous regardez assez dur. Garder ce commentaire, de toute façon.
Plus une alternative que d'une réponse, mais peut-être vous pouvez envisager d'utiliser CMake au lieu de la plaine des Makefiles. Il a une bien meilleure syntaxe et est multi-plateforme.
OriginalL'auteur Jenia Ivanov | 2015-02-16
Vous devez vous connecter pour publier un commentaire.
Il y a deux problèmes.
Tout d'abord, votre
CFLAGS
de la ligne est faux: vous avez oublié de diregtk+-3.0
dans lepkg-config
la partie, de sortepkg-config
va cracher une erreur à la place:Deuxièmement, et plus important,
$(...)
est intercepté par faire de lui-même pour la substitution de variables. En fait, vous avez déjà vu ça déjà:est fait par la marque.
Il y a deux choses que vous pouvez faire.
Tout d'abord, vous pouvez utiliser
`...`
au lieu de cela, qui fait la même chose ($(...)
est plus récente de la syntaxe shell).Deuxième, puisque vous semblez être d'utiliser GNU make, vous pouvez utiliser le
shell
commande de substitution, qui a été indiqué dans la réponse Basile Starynkevitch lié ci-dessus:OriginalL'auteur andlabs
à l'adresse de l'erreur indiquée:
"principal.c:1:21: erreur fatale: gtk/gtk.h: Aucun fichier ou répertoire de"
le message d'erreur dit qu'il ne trouve pas le gtk/gtk.h fichier
corriger en ajoutant le bon chemin vers le gcc compiler déclaration:
corriger en ajoutant le chemin d'accès et le nom de la bibliothèque de la gcc lien déclaration:
Il serait également très intéressant de regarder dans les pkg-config fichier pour voir exactement ce qu'il contient/effectue
Makefile
Cette réponse ne comprend pas la question, mais aussi la bonne façon d'aborder le problème mal compris! Vous n'utilisez pas
-I
des directives pour ajouter GTK+chemin d'inclusion ou de faire manuellement ce quepkg-config
ne vous-même; vous utilisezpkg-config
directement à la place. Chaque distro sera différent.pc
fichier. Mais ce n'est pas le problème, parce que l'OP utiliserpkg-config
! Le vrai problème, c'est que son makefile syntaxe est mauvaise; je suis sur le point de tout cela.OriginalL'auteur user3629249