Vari sviluppatori scoraggiano l'utilizzo di PKG_CHECK_MODULES
(ad esempio, in this answer) ma non c'è una spiegazione chiara e completa delle loro ragioni per quanto ho cercato. Quindi, chiedo:PKG_CHECK_MODULES considerato dannoso?
- Perché
PKG_CHECK_MODULES
essere dannoso? - Quali sono le alternative?
Io, per esempio, l'ho usato per la prima volta oggi. Ho trovato invaluably utile, specialmente per trattare con i set di biblioteca piuttosto complicati, come GTK +, dove sono tutte queste dipendenze:
-I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
-I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/freetype2 -I/usr/include/libpng12
-lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0
-lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
-lgthread-2.0 -lrt -lglib-2.0
Sebbene le ragioni siano sane dietro l'alternativa a 'pkg-config' che William Pursell di solito propone, la realtà è che ci sono intere piattaforme come GTK che funzionano in modo 'errato' e correggerle richiederebbe tutte quelle librerie per cambiare la directory in cui si installano. Ciò causerebbe una massiccia rottura dei sistemi di compilazione delle applicazioni esistenti. Dal momento che non penso che il modo "sbagliato" causi effettivamente danni, non vale la pena cambiarlo. – ptomato
Inoltre, 'pkg-config' consente di mantenere versioni incompatibili di librerie (come GTK 2 e GTK 3) installate in parallelo. Anche se sono sicuro che William Pursell ci abbia pensato e sarà felice di spiegare come farlo a modo suo ;-) – ptomato
@ptomato No, sono una persona non-gui e non ho mai trattato direttamente con gtk. Ma credo che sia del tutto possibile fare cose come "LDFLAGS = -L $ (pkg-config --libs-only-L gtk + -2.0) CPPFLAGS = $ (pkg-config --cflags gtk + -2.0) LIBS = $ (pkg-config --libs-only-l gtk + -2.0) "e queste opzioni possono essere inserite in un config.site. Per essere chiari, non ho obiezioni a pkg-config, ma non mi piace PKG_CHECK_MODULES per i motivi delineati nella mia risposta. –