從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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章