当我尝试编译我的程序时,GTKmm 头文件似乎丢失了
GTKmm header files seem to be missing when I try to compile my program
我正在尝试使用 g++ (clang) 编译 GTKmm C++ 程序,但是我似乎找不到我需要的头文件。我有 运行 GTK+ 的安装 .sh
文件,我也尝试通过 Homebrew 直接安装 GTKmm,但我仍然收到此错误:
fatal error: 'gtkmm/button.h' file not found
我认为这就像添加一个包含目录一样简单,但我已经尝试在我的硬盘驱动器中搜索与 GTK 相关的东西,但仍然没有找到任何东西。我该怎么办?
我正在使用 Macbook 运行ning MacOS Big Sur。
更新:
我的代码是这样的:
helloworld.h
#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H
#include <gtkmm/button.h>
#include <gtkmm/window.h>
class HelloWorld : public Gtk::Window {
public:
HelloWorld();
virtual ~HelloWorld();
protected:
//Signal handlers:
void on_button_clicked();
//Member widgets:
Gtk::Button m_button;
};
#endif
helloworld.cpp
#include "helloworld.h"
#include <iostream>
HelloWorld::HelloWorld()
: m_button("Hello World") // creates a new button with label "Hello World".
{
// Sets the border width of the window.
set_border_width(10);
// When the button receives the "clicked" signal, it will call the
// on_button_clicked() method defined below.
m_button.signal_clicked().connect(sigc::mem_fun(*this,
&HelloWorld::on_button_clicked));
// This packs the button into the Window (a container).
add(m_button);
// The final step is to display this newly created widget...
m_button.show();
}
HelloWorld::~HelloWorld()
{
}
void HelloWorld::on_button_clicked()
{
std::cout << "Hello World" << std::endl;
}
main.cpp
#include "helloworld.h"
#include <gtkmm/application.h>
int main (int argc, char *argv[]) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
HelloWorld helloworld;
//Shows the window and returns when it is closed.
return app->run(helloworld);
}
此代码来自here.
我正在编译,首先导航到上面列出的文件的目录,然后 运行ning g++ main.cpp -o helloworld
.
因为我安装了Homebrew,g++使用clang++。
好的,我想通了。
我需要通过 Homebrew 安装 GTK+ 和 GTKmm。这将库放入 /usr/local/include
。请注意,问题代码仍然不起作用,因为它使用了错误的目录(我安装了 gtk+3 和 gtkmm3)。有关详细信息,请参阅 this 答案。
我正在尝试使用 g++ (clang) 编译 GTKmm C++ 程序,但是我似乎找不到我需要的头文件。我有 运行 GTK+ 的安装 .sh
文件,我也尝试通过 Homebrew 直接安装 GTKmm,但我仍然收到此错误:
fatal error: 'gtkmm/button.h' file not found
我认为这就像添加一个包含目录一样简单,但我已经尝试在我的硬盘驱动器中搜索与 GTK 相关的东西,但仍然没有找到任何东西。我该怎么办?
我正在使用 Macbook 运行ning MacOS Big Sur。
更新: 我的代码是这样的:
helloworld.h
#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H
#include <gtkmm/button.h>
#include <gtkmm/window.h>
class HelloWorld : public Gtk::Window {
public:
HelloWorld();
virtual ~HelloWorld();
protected:
//Signal handlers:
void on_button_clicked();
//Member widgets:
Gtk::Button m_button;
};
#endif
helloworld.cpp
#include "helloworld.h"
#include <iostream>
HelloWorld::HelloWorld()
: m_button("Hello World") // creates a new button with label "Hello World".
{
// Sets the border width of the window.
set_border_width(10);
// When the button receives the "clicked" signal, it will call the
// on_button_clicked() method defined below.
m_button.signal_clicked().connect(sigc::mem_fun(*this,
&HelloWorld::on_button_clicked));
// This packs the button into the Window (a container).
add(m_button);
// The final step is to display this newly created widget...
m_button.show();
}
HelloWorld::~HelloWorld()
{
}
void HelloWorld::on_button_clicked()
{
std::cout << "Hello World" << std::endl;
}
main.cpp
#include "helloworld.h"
#include <gtkmm/application.h>
int main (int argc, char *argv[]) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
HelloWorld helloworld;
//Shows the window and returns when it is closed.
return app->run(helloworld);
}
此代码来自here.
我正在编译,首先导航到上面列出的文件的目录,然后 运行ning g++ main.cpp -o helloworld
.
因为我安装了Homebrew,g++使用clang++。
好的,我想通了。
我需要通过 Homebrew 安装 GTK+ 和 GTKmm。这将库放入 /usr/local/include
。请注意,问题代码仍然不起作用,因为它使用了错误的目录(我安装了 gtk+3 和 gtkmm3)。有关详细信息,请参阅 this 答案。