[英]gtkmm: Simple example fails to compile: gtkmm.h: No such file or directory
我正在閱讀 gtkmm 文檔。 我首先嘗試編譯“簡單示例”。 這是代碼。 也可以在這里找到。
/// SimpleExample.cpp
#include <gtkmm.h>
int main(int argc, char *argv[])
{
auto app =
Gtk::Application::create(argc, argv,
"org.gtkmm.examples.base");
Gtk::Window window;
window.set_default_size(200, 200);
return app->run(window);
}
我試圖編譯這個使用
g++ SimpleExample.cpp -o SimpleExample `pkg-config gtkmm-3.0 --cflags --libs`
這應該根據文檔工作。 (見鏈接頁面的結尾。)
運行pkg-config gtkmm-3.0 --cflags --libs
產生
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
我正在運行 Debian 9 Stretch。 我安裝了gtkmm
sudo apt update && sudo apt install libgtkmm-3.0-dev
運行find /usr -name "gtkmm"
產生
/usr/lib/x86_64-linux-gnu/pkgconfig/gtkmm-3.0.pc
/usr/lib/x86_64-linux-gnu/gtkmm-3.0
/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include/gtkmmconfig.h
/usr/include/gtkmm-3.0
/usr/include/gtkmm-3.0/gtkmm
/usr/include/gtkmm-3.0/gtkmm.h
那么為什么這個例子不能編譯呢?
新航站樓
pkg-config gtkmm-3.0 --cflags --libs
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
試試
find /usr -name "*gtkmm-3.0*"
/usr/lib/x86_64-linux-gnu/pkgconfig/gtkmm-3.0.pc
/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1.1.0
/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1
/usr/lib/x86_64-linux-gnu/gtkmm-3.0
/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so
/usr/share/doc/libgtkmm-3.0-1v5
/usr/share/doc/libgtkmm-3.0-dev
/usr/include/gtkmm-3.0
出口地點
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig"
重新運行
pkg-config gtkmm-3.0 --cflags --libs
Package xproto was not found in the pkg-config search path.
Perhaps you should add the directory containing `xproto.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xproto', required by 'xau', not found
(這次是不同的錯誤。)
再找找
find /usr -name "*xproto*"
/usr/share/pkgconfig/xproto.pc
/usr/include/xcb/xproto.h
/usr/include/GL/glxproto.h
/usr/include/X11/extensions/lbxproto.h
更改導出命令
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig;/usr/share/pkgconfig"
重新運行,回到第 1 方格
pkg-config gtkmm-3.0 --cflags --libs
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
我從閱讀這個問題中發現路徑應該用冒號分隔。
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"
然而,這並不能解決為什么需要設置這個變量的問題。 pkg-config
是因為它應該使編譯更簡單,但這並不比手動指定包含路徑更簡單,因為需要設置多個環境變量。
另外,網上沒有關於這個問題的信息讓我懷疑這是一個大多數用戶不會遇到的問題,因此可能是 Debian 9 特有的。(我想知道是否有人遇到過這個問題,並且在什么操作系統上。)
起初,安裝gtkmm有點復雜是正常的。 就我所見,在 Stackoverflow 論壇中,許多用戶在這樣做時遇到了問題。 即使是 Windows 操作系統中的用戶也會遇到錯誤消息,如果他們嘗試將 gtkmm 與 Visual Studio 一起使用來開發獨立於平台的應用程序......但對於您的問題。 有很多選項可能會出錯。 一個簡單的解釋是,必須安裝 debian 包“libgtk-3-dev”,它用於在 C 中創建 GTK+ 應用程序,因為 gtkmm 使用這個包。 所以第一步是嘗試,它編譯 GTK+ 的 C 源代碼是有效的。 第二種解釋是,debian 的“包管理器”通常已損壞,因此切換 Linux 發行版將是一個很好的建議。 例如,在 Fedora 中,一個簡單的dnf install gtk3 gtk3-devel gtkmm30 gtkmm30-devel
就足以開始編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.