number - Cómo usar pkg-config en Make
latex renewcommand figure number (2)
Quiero compilar el programa GTK más simple. Puedo compilarlo usando la línea de comando:
gcc $(pkg-config --cflags --libs gtk+-3.0) main.c -o main.o
Sin embargo, si uso Make it doesnt work:
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)
Me dice esto:
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
¿Dónde pego $ (pkg-config --cflags --libs gtk + -3.0) en el Makefile para hacerlo compilar?
Muchas gracias de antemano por su amable ayuda.
Hay dos problemas.
Primero, su línea CFLAGS
está equivocada: olvidó decir gtk+-3.0
en la parte pkg-config
, por lo que pkg-config
lanzará un error en su lugar:
CFLAGS=-g -Wall -Wextra $(pkg-config --cflags gtk+-3.0)
En segundo lugar, y más importante, $(...)
es interceptado por make para la sustitución de variables. De hecho, ya has visto esto:
SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
todo está hecho por make.
Hay dos cosas que puedes hacer.
Primero, puede usar `...`
lugar, que hace lo mismo ( $(...)
es la sintaxis del shell más nueva).
CFLAGS=-g -Wall -Wextra `pkg-config --cflags gtk+-3.0`
LDFLAGS=`pkg-config --libs gtk+-3.0`
En segundo lugar, dado que parece estar usando GNU make, puede usar el comando de sustitución de shell
, que se mostró en la respuesta Basile Starynkevitch vinculada anteriormente:
CFLAGS=-g -Wall -Wextra $(shell pkg-config --cflags gtk+-3.0)
LDFLAGS=$(shell pkg-config --libs gtk+-3.0)
para abordar el error indicado:
"main.c: 1: 21: error fatal: gtk / gtk.h: no existe tal archivo o directorio"
el mensaje de error dice que no puede encontrar el archivo gtk / gtk.h
correcto agregando la ruta adecuada a la declaración de compilación de gcc:
''gcc -g -Wall -Wextra -c -o main.o main.c -I./gtk''
-- this is a capital ''I''
corrija agregando la ruta y el nombre de la biblioteca a la declaración del enlace gcc:
''gcc -g -Wall -Wextra -o main main.o -L<pathtolibrary> -lgtk+-3.0''
-- this is a capital ''L'' then a lower case ''l''
También valdría la pena examinar el archivo pkg-config para ver exactamente qué contiene / realiza
This link:
<https://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html>
will give you all the info on the parameters to gcc