gpt4 book ai didi

c++ - Gtkmm 构建错误

转载 作者:行者123 更新时间:2023-12-02 10:24:42 26 4
gpt4 key购买 nike

操作系统: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 构建项目,但出现以下错误:

error: 'Gtk::Application' has not been declared
Gtk::Application::create(argc, argv,
(recipe for target failed, etc...)

此错误是由 Gtkmm 的标准“最简单程序”引起的。
#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 文档站点(上面的链接)中的 Gtkmm 3。

我已经安装了 Gtkmm-3-dev,pkg-config 返回所有正确的标志和目录,并且 CMakeLists.txt 包括以下内容:
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 --cflags 的输出:
-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::Application 可能以类似的方式工作,但我还没有完全探索这一点。非常感谢任何帮助,谢谢。

山姆

最佳答案

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

pkg_check_modules(GTKMM gtkmm-3)

应该是:
pkg_check_modules(GTKMM gtkmm-3.0)

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

关于c++ - Gtkmm 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com