2016-11-25 4 views
0

私は隙間デザイナーを使ってGUIを作ったので、そのクラスの機能をカプセル化しました。ここで私が書いたクラス定義があります:gtkmmでgtkプログラムをコンパイルする際のエラー

#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); 

私はGtk::Windowのコンストラクタに基礎となるのCObjectを渡すために世話をしてきました。 g++ main_app.cpp -o main pkg-config --cflags --libs gtkmm-3.0``コマンドを使ってこのプログラムをコンパイルしようとすると、私は.pthreadファイルを取得するか、ファイルを個々にコンパイルしようとすると、そのgtkmmファイルまたはディレクトリはありません。しかし、私は小さなドライバプログラムを作成することによってgtkmmをテストしました。私は間違って何をしているのだろうか?

ありがとうございました。

EDIT:hereは私のプロジェクトのgithubレポです。 clipswindow.oをビルドすると小さなエラーが発生しますが、エラーは引き続き発生します。

+0

私はエラーを再現できません。コードが不完全で、実際にコードをコンパイルする方法が不明です。推測のみが可能で、推測するとg ++のオプションをチェックします。 –

+0

私のコードにgithub repoを追加しました。それを見てください?どのようにプログラムをコンパイルしていますか? –

答えて

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)` 

問題はメイクファイルであり、ここで指定したコードサンプルではありません。 main_app.cppとclipswindow.cppの両方をmain.oに出力するように設定しているので、これらのうちの1つがもう一方の出力を上書きします。彼らはあなたが構築したいものと一致しません。次に、空きスペースがありません

`$(GTK_COMPILE_FLAGS)` 

これがpthreadがファイル名に追加される理由です。

+0

ありがとうございます。あなたは ''タグの間のスペースについて話していますか? –

+0

編集された、 ''は引用符で囲まれました。 ''タグの前にはい –

関連する問題