从Windows到Linux之——pkg-config

pkg-config是接触了Linux后才遇到的东西,之前在Windows上没有见过类似的东西。
第一次见是wx-config,教程里写编译的时候只需要使用:
g++ myfoo.cpp `wx-config --libs --cxxflags` -o myfoo
就可以编译,直接写
g++ myfoo.cpp-o myfoo
就不行,很好奇,它是如何让编译通过的?
尝试在终端运行wx-config --libs --cxxflags发现有输出:

$ wx-config --libs --cxxflags
-I/usr/local/lib/wx/include/gtk3-unicode-3.1 -I/usr/local/include/wx-3.1 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread
-L/usr/local/lib -pthread   -lwx_gtk3u_xrc-3.1 -lwx_gtk3u_html-3.1 -lwx_gtk3u_qa-3.1 -lwx_gtk3u_core-3.1 -lwx_baseu_xml-3.1 -lwx_baseu_net-3.1 -lwx_baseu-3.1 

震惊!居然自动把依赖的环境都设置好了!Windows上没见过这么强的东西啊!
一直以为是wxWidgets独有的,直到编译一个例子时,发现无法直接编译过,在搜索的时候发现了pkg-config。
用法类似,

$ pkg-config gtk+-3.0 --cflags --libs
-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

简直不要太方便!更多详细资料,可以参考:pkg-config 详解
写的很详细,很棒!

发布了38 篇原创文章 · 获赞 18 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章