numbering number modificar ggplot geom_text_repel geom_text change c gcc makefile gtk

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