如何解决慢速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 举报,一经查实,本站将立刻删除。