首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtkmm:简单示例无法编译: gtkmm.h:没有这样的文件或目录

gtkmm:简单示例无法编译: gtkmm.h:没有这样的文件或目录
EN

Stack Overflow用户
提问于 2018-02-05 18:37:42
回答 1查看 3.6K关注 0票数 3

我正在阅读gtkmm文档。我已经开始尝试编译这个“简单的例子”。下面是代码。它也可以在here中找到。

代码语言:javascript
复制
/// 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);
}

我尝试使用以下命令编译此代码:

代码语言:javascript
复制
g++ SimpleExample.cpp -o SimpleExample `pkg-config gtkmm-3.0 --cflags --libs`

它应该根据文档工作。(请参阅链接页面的末尾。)

运行pkg-config gtkmm-3.0 --cflags --libs会产生

代码语言:javascript
复制
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的时候

代码语言:javascript
复制
sudo apt update && sudo apt install libgtkmm-3.0-dev

运行find /usr -name "gtkmm"会产生

代码语言:javascript
复制
/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

那么为什么这个例子不能编译呢?

更新:

新终端

代码语言:javascript
复制
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

试一试

代码语言:javascript
复制
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

导出位置

代码语言:javascript
复制
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig"

重新运行

代码语言:javascript
复制
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

(这是一个不同的错误。)

尝试再次查找

代码语言:javascript
复制
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

更改导出命令

代码语言:javascript
复制
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig;/usr/share/pkgconfig"

重新运行,回到正方形1

代码语言:javascript
复制
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,我发现路径应该用冒号分隔。

代码语言:javascript
复制
    export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"

然而,这根本不能解决为什么需要设置这个变量的问题。使用pkg-config是因为它应该使编译更简单,但是这并不比手动指定包含路径更简单,因为需要设置多个环境变量。

此外,网上缺乏关于这个问题的信息,这让我怀疑这是一个大多数用户都不会遇到的问题,因此可能是Debian 9特有的问题。(我想知道是否有人统计过这个问题,以及在什么操作系统上。)

EN

回答 1

Stack Overflow用户

发布于 2018-02-09 16:21:23

首先,安装gtkmm有点复杂是很正常的。据我所知,在Stackoverflow论坛上,许多用户都有这样做的问题。即使是Windows操作系统中的用户,如果他们试图结合使用gtkmm和Visual Studio来开发独立于平台的应用程序,也会遇到错误消息。但是对于你的问题。有很多可能出错的选项。一个简单的解释是,必须安装debian包“libgtk-3-dev”,该包用于用C语言创建GTK+应用程序,因为gtkmm使用这个包。因此,第一步是尝试,它的编译C源码的GTK+工作。第二种解释是,debian的“包管理器”通常是崩溃的,因此切换Linux发行版将是一个好的建议。例如,在Fedora中,一个简单的dnf install gtk3 gtk3-devel gtkmm30 gtkmm30-devel就足以启动编程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48620635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档