首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gtkmm构建错误

Gtkmm构建错误
EN

Stack Overflow用户
提问于 2017-09-24 23:45:23
回答 1查看 1.1K关注 0票数 1

操作系统: Debian 9.1

编译: gcc (Debian 6.3.0-18)

GTK+版本: 3.22.11-1

Gtkmm版本: 3.22.0-1

大家好,我一直在处理一个关于Gtkmm 3.22.0-1构建tutorial上给出的简单应用程序的麻烦问题。我正在使用CMake构建项目,并收到以下错误:

代码语言:javascript
复制
error: 'Gtk::Application' has not been declared
    Gtk::Application::create(argc, argv,
(recipe for target failed, etc...)

这个错误是由于Gtkmm的标准“最简单的程序”造成的。

代码语言:javascript
复制
#include <iostream>
#include<gtkmm.h>

int main(int argc, char* argv[])
{
    auto app =
        Gtk::Application::create(argc, argv,
        "org.gtkmm.examples.base");

    Gtk::Window win;
    win.set_default_size(200, 200);

    return app->run(win);
}

根据研究,我可以说这个错误在Gtkmm 3发布之前很常见,因为Gtk::Application直到Gtkmm 3.4 (大约2012年)才实现。上面给出的例子是来自GNOME文档站点(上面的链接)的Gtkm3。

我已经安装了Gtkmm-3-dev,pkg-config返回所有正确的标志和目录,CMakeLists.txt包括以下内容:

代码语言:javascript
复制
find_package(PkgConfig REQUIRE)
pkg_check_modules(GTKMM gtkmm-3)
link_directories( ${GTKMM_LIBRARY_DIRS} )
include_directories( ${GTKMM_INCLUDE_DIRS} )
...
target_link_libraries(proj ${GTKMM_LIBRARIES} )

其中'proj‘是我的项目的名称。我运行的是Debian GNU/Linux 9.1 (stretch)。pkg-config gtkmm-3 --cflag的输出:

代码语言:javascript
复制
-pthread -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/atkmm-1.6 -I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -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/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -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

我找不到任何最近关于这个问题的帖子,我的下一个选择是在Gtkmm API文档中寻找答案。我发现有一个Gio::应用程序可能以类似的方式工作,但我还没有充分研究过。非常感谢您的帮助,谢谢。

相同的

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 07:07:05

问题解决了,问题是CMake找不到Gtkmm-3,因为包的标题是"gtkmm-3.0“。所以CMakeLists.txt中的这一行:

代码语言:javascript
复制
pkg_check_modules(GTKMM gtkmm-3)

应该是:

代码语言:javascript
复制
pkg_check_modules(GTKMM gtkmm-3.0)

感谢JohnKoch帮助解决了这个问题。

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

https://stackoverflow.com/questions/46391877

复制
相关文章

相似问题

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