慢速gtkmm编译适用于小型程序

问题描述

我正在学习gtkmm,极其简单的示例项目(即带有可打开对话框的按钮的窗口)需要大约3秒钟的时间才能在合理的硬件上使用g ++进行编译。

$ time g++ examplewindow.cpp main.cpp `pkg-config   gtkmm-3.0 --cflags --libs` 

real    0m4.011s
user    0m3.630s
sys 0m0.374s

这次有什么我可以减少的吗?

我在Linux上使用的是gk的gtkmm版本3.24.0-2和版本8.3.0


编辑:代码

examplewindow.h

#pragma once                                                                    
                                                                                
#include <gtkmm/window.h>                                                       
#include <gtkmm/buttonBox.h>                                                    
#include <gtkmm/button.h>                                                       
                                                                                
class ExampleWindow : public Gtk::Window {                                      
                                                                                
public:                                                                         
    ExampleWindow();                                                            
    virtual ~ExampleWindow();                                                   
                                                                                
protected:                                                                      
    void on_button_info_clicked();                                              
    void on_button_question_clicked();                                          
                                                                                
    Gtk::ButtonBox m_ButtonBox;                                                 
    Gtk::Button m_Button_Info,m_Button_Question;                               
};   

examplewindow.cpp

#include <iostream>                                                             
#include <gtkmm/messagedialog.h>                                                
                                                                                
#include "examplewindow.h"                                                      
                                                                             
ExampleWindow::ExampleWindow()                                                  
    :m_ButtonBox( Gtk::ORIENTATION_VERTICAL ),m_Button_Info( "Show info Box" ),m_Button_Question( "Show question Box" )                                    
{                                                                               
    add( m_ButtonBox );                                                         
                                                                                
    m_Button_Info.signal_clicked().connect( sigc::mem_fun( *this,&ExampleWindow::on_button_info_clicked) );
    m_Button_Question.signal_clicked().connect( sigc::mem_fun( *this,&ExampleWindow::on_button_question_clicked) );
                                                                             
    m_ButtonBox.pack_start( m_Button_Info );                                    
    m_ButtonBox.pack_start( m_Button_Question );                                
                                                                                
    show_all_children();                                                        
}                                                                               
                                                                                
ExampleWindow::~ExampleWindow() {                                               
}                                                                               
                                                                                
void ExampleWindow::on_button_info_clicked() {                                  
    Gtk::MessageDialog dialog( *this,"This is an INFO MessageDialog",false,Gtk::MESSAGE_QUESTION,Gtk::BUTTONS_OK_CANCEL);
                                                                              
    dialog.set_secondary_text( "This is the secondary text" );                  
                                                                                
    dialog.run();                                                               
}                                                                               
                                                                                
void ExampleWindow::on_button_question_clicked() {                              
    Gtk::MessageDialog dialog( *this,"This is a QUESTION MessageDialog",Gtk::BUTTONS_OK_CANCEL);
                                                                             
    dialog.set_secondary_text( "This is the other text" );                      
                                                                                
    int result = dialog.run();                                                  
                                                                                
    switch( result ) {                                                          
        case( Gtk::RESPONSE_OK ):                                               
            std::cout << "Ok clicked" << std::endl;                             
            break;                                                              
        case( Gtk::RESPONSE_CANCEL ):                                           
            std::cout << "Cancel clicked" << std::endl;                         
            break;                                                              
        default:                                                                
            std::cout << "Unexpected button clicked" << std::endl;              
            break;                                                              
    }                                                                           
}

main.cpp

#include <gtkmm/application.h>                                                  
                                                                                
#include "examplewindow.h"                                                      
                                                                                
int main( int argc,char **argv ) {                                             
    auto app = Gtk::Application::create( argc,argv,"org.gtkmm.example" );  
                                                                                
    ExampleWindow window;                                                       
                                                                                
    return app->run( window );                                                  
}  

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)