【发布时间】:2018-02-05 10:37:41
【问题描述】:
我正在阅读 gtkmm 文档。我首先尝试编译“简单示例”。这是代码。也可以找到here。
/// 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"
重新运行,回到第一格
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
问题已解决(排序)
我通过阅读此question 发现该路径应以冒号分隔。
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"
然而,这并不能解决为什么需要设置这个变量的问题。使用pkg-config 是因为它应该使编译更简单,但这并不比手动指定包含路径更简单,因为需要设置多个环境变量。
此外,网上缺乏关于这个问题的信息让我怀疑这是大多数用户没有遇到的问题,因此可能是 Debian 9 特有的。(我想知道是否有其他人遇到过这个问题问题,以及在什么操作系统上。)
【问题讨论】:
-
试试
find /usr -name "*gtkmm*" -
@n.m.为什么?我已经可以看到头文件了。这是我在上面发布的输出的最后一行。
/usr/include/gtkmm-3.0/gtkmm.h我的问题是为什么不编译考虑到我可以看到标题在哪里。 -
因为你想找到你的 gtkmm.pc 文件。阅读消息:
Perhaps you should add the directory containing `gtkmm-3.0.pc' to the PKG_CONFIG_PATH environment variable。 -
@n.m.你是说那段代码的第一行?说
/usr/lib/x86_64-linux-gnu/pkgconfig/gtkmm-3.0.pc的那个? -
抱歉错过了。所以
Perhaps you should add the directory containing `gtkmm-3.0.pc' to the PKG_CONFIG_PATH environment variable正如消息所暗示的那样。
标签: c++ compilation gtkmm pkg-config gtkmm3