使用gtkmm编译gtk程序时出错

时间:2016-11-25 05:10:23

标签: c++ gtk

我使用了林间空地设计师制作了一个GUI,并且我已经将这个功能封装在一个类中。这是我写过的课程定义:

#ifndef _CLIPSWINDOW_H
#define _CLIPSWINDOW_H 
#include <gtkmm.h>


class ClipsWindow : public Gtk::Window
{
public:
    ClipsWindow(BaseObjectType * cobject, const Glib::RefPtr<Gtk::Builder> &refGlade);
    ~ClipsWindow();


protected:
    Glib::RefPtr<Gtk::Builder> builder;
    //MainWindow
    Gtk::Window *main_window;
    // Control buttons.
    Gtk::Button *agenda_btn; // buttons to contain the control buttons in the GUI.
    Gtk::Button *fact_btn;
    Gtk::Button *run_btn;
    Gtk::Button *reset_btn;
    // Menu options.
    //Gtk::MenuButton *options; // Get the options menu
    Gtk::MenuItem *load_item; // Menu items for the "Options menu"
    Gtk::MenuItem *save_item;
    Gtk::MenuItem *change_strategy_item;
    //Gtk::MenuButton *help;
    Gtk::MenuItem *about_item; // Menu item for the "Help Menu"

    // signal handlers for buttons. 
    void on_agendabtn_clicked();
    void on_factbtn_clicked();
    void on_runbtn_clicked();
    void on_resetbtn_clicked();

    // signal handlers for menu items.
    void on_load_activate();
    void on_StrategyOption_activate();
    void on_SaveOption_activate();
    void AboutItem_activate_cb(); 
};







#endif

主要功能如下:

Gtk::Main kit(argc,argv);
    //auto app = Gtk::Application::create(argc, argv, "clipsgui.clemson.edu");
  Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("clipswindow.glade");



    ClipsWindow *cw = 0;
    builder->get_widget_derived("main_window", cw);
    kit.run(*cw);

我已经注意将底层Cobject传递给Gtk::Window的构造函数。当我尝试使用命令g++ main_app.cpp -o main pkg-config --cflags --libs gtkmm-3.0``编译此程序时,我得到一个.pthread文件或者当尝试单独编译文件时出错是`gtkmm没有这样的文件或目录。但是,我通过创建一个小驱动程序来测试gtkmm并且编译得很好。知道我可能做错了吗?

感谢。

编辑:here是我项目的github回购。构建clipswindow.o时出现一个小错误,但错误仍然存​​在。

1 个答案:

答案 0 :(得分:0)

CC=g++
GTK_COMPILE_FLAGS=pkg-config gtkmm-3.0 --cflags --libs


main: main_app.o clipswindow.o
    $(CC) main_app.o clipswindow.o -o main`$(GTK_COMPILE_FLAGS)`

main_app.o: main_app.cpp clipswindow.h
    $(CC)  main_app.cpp -o main.o `$(GTK_COMPILE_FLAGS)`

clipswindow.o: clipswindow.cpp clipswindow.h
    $(CC)  clipswindow.cpp  -o main.o`$(GTK_COMPILE_FLAGS)`

问题在于您的makefile,而不是您在此处提供的代码示例。您已将main_app.cpp和clipswindow.cpp都设置为输出main.o,因此其中一个将覆盖另一个。它们与您想要构建的内容不匹配。接下来你错过了一个空格

`$(GTK_COMPILE_FLAGS)`

两次这就是将pthread附加到文件名的原因。