c++ - gtkmm.h 无法打开源文件(但编译时使用 pkg-config 标志)
问题描述
当我编译使用 gtkmm 的程序时,我总是必须将 pkg-config 标志添加到命令中,并且始终带有#include<gtkmm.h>
红色下划线(无法打开源文件)。
我怎样才能摆脱错误,而不必pkg-config gtkmm-3.0 --cflags --libs
每次编译代码时都键入,代码如下:
#include <gtkmm.h>
#include <iostream>
void hello_world() {
std::cout << "Hello world." << std::endl;
}
int main(int argc, char* argv[])
{
Gtk::Main app(argc, argv);
auto builder = Gtk::Builder::create_from_file("test.glade");
Gtk::Window *main_window;
builder->get_widget("window", main_window);
Gtk::Button *button1;
builder->get_widget("button1", button1);
button1->signal_clicked().connect(sigc::ptr_fun(&hello_world));
Gtk::Main::run(*main_window);
}
没有标志,我只会得到错误:
main.cpp:1:10: fatal error: gtkmm.h: No such file or directory
#include <gtkmm.h>
^~~~~~~~~
compilation terminated.
解决方案
你在终端上输入了吗?
echo `pkg-config gtkmm-3.0 --cflags --libs`
这将显示:
-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/libdrm -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -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/libmount -I/usr/include/blkid -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0
这就是您需要编译的所有应用程序。您可以手动键入所有这些行,但这不是一个好的解决方案,因为此内容取决于您的环境,并且可能会更改 pkg-config 在这里为您隐藏痛苦。
推荐阅读
- reactjs - ReactJS 将 ref 发送到全局 useContext 状态(Konva)
- php - 从 SQL 到 PHP 的最大值
- java - Nd4J:获取值存在的索引
- javascript - Ice 失败,添加 TURN 服务器并查看 about:webrtc 了解更多详情
- sql - 如何使用带有 UNLOAD 语句的 DataGrip SQL 格式化程序
- c++ - 如何在 while 循环之外使用在 while 循环中声明的变量?
- javascript - TypeScript 中可能未定义对象
- error-handling - 如何在没有空匹配臂的情况下检索 Result 上的错误值?
- python - 打印第一个输入数字是否大于第二个输入数字的程序
- php - 使用'withCount'方法获取嵌套关系的计数