GUI プログラムは これまでのおさらい 初期化 無限ループ 終了処理 低レベルから高レベルまで Xlib Xt gtk+ 等々 言語も自由自在 C C++ C# VB.NET Python 等々 Shell Script でもできる zenity 使ってね

Similar documents
ÆþÌçGTK+

昨年度までの研究紹介 および 研究計画

kiso2-03.key

TA tani/class/mech enshu/ X Window System GUI(Graphical User Interface) GUI (event driven) 2 Gtk

C

double float

ÆþÌçGTK+

Linux XScreenSaver T020074

2 2 Gtk+ GUI (widget ) GUI Gtk+ GUI Gtk+ GUI 2.2 Gtk GUI sample1.c Web ( tani/class/mech enshu/) enshu2009gui1.tar.gz

新 EasyISTR の紹介紹介 ver /9 VersionUp の紹介内容 FrontISTR ver 5.0 が近々リリースさ近々リリースされるリリースされるが これされるが近々リリースさ これに伴い伴いい GUI の紹介変更が必要 が近々リリースさ必要 現状 GUI

分割コンパイル (2018 年度 ) 担当 : 笹倉 佐藤 分割コンパイルとは 一つのプログラムのソースを複数のソースファイルに分けてコンパイルすること ある程度大きなプログラムの場合ソースファイルをいくつかに分割して開発するのが普通 1

橡Ⅳインストールマニュアル.PDF

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

memo

1. OS のインストール 今回インストールするのは, Ubuntu という Linux ディストリビューションの中の一つ. OS, ディストリビューションの種類 ディストリビューションとは, 一般利用者が導入 利用するために多くのコンポーネントをまとめた頒布形態. 無料のものと有料のものがあり,

情報処理概論(第二日目)

untitled

2_Boost(1.60.0) のインストール No 概要対象ユーザコマンド確認 ( 確認コマンド等 ) 備考 1 Boostのソースディレクトリ作成 2 boost_1_60_0.tar.gz の取得 # mkdir /usr/local/src/boost_1_60_0 # chown : /u

2 1. Ubuntu 1.1 OS OS OS ( OS ) OS ( OS ) VMware Player VMware Player jp/download/player/ URL VMware Plaeyr VMware

情報処理概論(第二日目)

スライド 1

273? C

Microsoft Word - 小島秀規2.doc

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

PowerPoint Presentation

LAN Copyright c Daikoku Manabu This tutorial is licensed under a Creative Commons Attribution 2.1 Japan License

はじめに このドキュメントではftServerに関する障害調査を行う際に 必要となるログ データの取得方法を説明しています ログ データの取得には 初期解析用のデータの取得方法と 詳細な調査を行うときのデータ取得方法があります 特別な理由でOS 側のログが必要となった場合には RHELログの取得につ

C言語入門

Microsoft Word - C.....u.K...doc

XFree XFree86 2. Kterm 3. Canna 4. Vi Vi VIM 5. Emacs Emacs 21 XEmacs XFree Mac OS X XDarwin Aqua XFree ( X L

Microsoft Word - ChoreonoidStartUpGuide.docx

プログラミング及び演習 第1回 講義概容・実行制御

OpenFOAM_compile_basic 1 / /12/23 12: 年 12 月 13 日オープン CAE 富山 ( 富山県立大学中川慎二 ) Disclaimer OPENFOAM is a registered trade mark

RHEA key

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用

Appendix

Condition DAQ condition condition 2 3 XML key value

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

gworksctl コマンドマニュアル 2019/6/17 株式会社 GDEP アドバンス 本書は GDEP Advance gworksctl コマンドマニュアルです G-Works G-Works Deep Learning Distribution for Linux( 以下 G-Works)

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

CM-3G 周辺モジュール拡張技術文書 MS5607センサ(温度、気圧)

本日の流れ

NI P1200 Release Notes Cover

超初心者用

Intel MPI Library Linux

OpenCV IS Report No Report Medical Information System Labratry

MSI Tip: システム検索による INSTALLDIRの設定

unix.dvi

法政大学理工学部創生科学科 小林一行研究室 YP-Spur をMATLAB で使うには? YP-Spur は,Linux ベースで開発されているようであるが,Windows でも使えるようなので, ここでは,Windows 版のMATLAB から使う方法を紹介する.YP-Spu

3.2 Linux root vi(vim) vi emacs emacs 4 Linux Kernel Linux Git 4.1 Git Git Linux Linux Linus Fedora root yum install global(debian Ubuntu apt-get inst

UNIX

OpenCV Windows(cygwin) Linux USB PC [1] Inel OpenCV OpenCV 1 Windows Linux OpenCV (a) (b)2 (c) (d) 1: OpenCV 1

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

C言語入門

MINI2440マニュアル

Transcription:

GUI プログラム入門 (3) Makefile を使ってみよう (Windows の話ではありません ) 西尾太 @Momonga Project

GUI プログラムは これまでのおさらい 初期化 無限ループ 終了処理 低レベルから高レベルまで Xlib Xt gtk+ 等々 言語も自由自在 C C++ C# VB.NET Python 等々 Shell Script でもできる zenity 使ってね

とりあえず hello_gtk.c #include <gtk/gtk.h> int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label ("Hello"); g_signal_connect (G_OBJECT (button), "clicked", gtk_main_quit, NULL); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show (button); gtk_widget_show (window); gtk_main (); return 0; }

gcc でビルド $ gcc -o hello_gtk hello_gtk.c hello_gtk.c:1:21: error: gtk/gtk.h: そのようなファイルやディレクトリはありません hello_gtk.c: In function main : hello_gtk.c:5: error: GtkWidget undeclared (first use in this function) hello_gtk.c:5: error: (Each undeclared identifier is reported only once hello_gtk.c:5: error: for each function it appears in.) hello_gtk.c:5: error: window undeclared (first use in this function) hello_gtk.c:6: error: button undeclared (first use in this function) hello_gtk.c:9: error: GTK_WINDOW_TOPLEVEL undeclared (first use in this function) hello_gtk.c:12: error: gtk_main_quit undeclared (first use in this function) hello_gtk.c:12: error: NULL undeclared (first use in this function) 当然失敗

pkg-config を使う $ pkg-config gtk+-2.0 --cflags -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/ lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 $ pkg-config gtk+-2.0 --libs -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lpangocairo-1.0 -lgio-2.0 -lxext -lxinerama -lxi -lxrandr -lxcursor -lxcomposite -lxdamage -lpangoxft-1.0 -lpangox-1.0 -lxfixes -lcairo -lpangoft2-1.0 -lxft -lxrender -lx11 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 これは使える

pkg-config って何? ビルドするための設定値を出力します 設定ファイルはライブラリについてます /usr/lib/pkgconfig にあります /usr/share/pkgconfig にもあります PKG_CONFIG_PATH を調べます hoge.pc って名前です gtk+ では gtk+-2.0.pc という名前です 詳細は man 読め

gcc & pkg-config $ gcc -o hello_gtk hello_gtk.c $(pkg-config gtk+-2.0 --cflags --libs) $./hello_gtk 実行できた!

make コマンドを使ってみる $ export CFLAGS=$(pkg-config gtk+-2.0 --cflags) $ export LDFLAGS=$(pkg-config gtk+-2.0 --libs) $ make hello_gtk cc -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lpangocairo-1.0 -lgio-2.0 -lxext -lxinerama -lxi -lxrandr -lxcursor -lxcomposite -lxdamage -lpangoxft-1.0 -lpangox-1.0 -lxfixes -lcairo -lpangoft2-1.0 -lxft -lxrender -lx11 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 hello_gtk.c -o hello_gtk $./hello_gtk ビルド 実行できた

Makefile いらないじゃん w 代わりに Makefile.am を作りましょう ついでに configure.ac も作りましょう autoreconf で configure スクリプト./configure && make && make install

Makefile.am の書式 インストール先 _ カテゴリ bin_programs = hello_gtk include_headers = hoge.h 等々 識別子 _ カテゴリ hello_gtk_sources = hello_gtk.c hello_gtk_cflags = $(HG_CFLAGS) 等々

今回の Makefile.am $ cat Makefile.am bin_programs = hello_gtk hello_gtk_sources = hello_gtk.c hello_gtk_cflags = $(HG_CFLAGS) hello_gtk_ldadd = $(HG_LIBS) 非常にシンプル

autoscan してみる $ ls Makefile.am hello_gtk.c $ autoscan $ ls Makefile.am autoscan.log configure.scan hello_gtk.c あっという間に configure.ac の雛形が!

configure.scan の内容 $ cat configure.scan # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([hello_gtk.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT

configure.ac にする $ cat configure.ac AC_INIT([hello_gtk], [0.0.1], [futoshi@momonga-linux.org]) AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_SRCDIR([hello_gtk.c]) AC_PROG_CC AC_PATH_PROG(PKG_CONFIG, pkg-config, no) PKG_CHECK_MODULES([HG], [gtk+-2.0]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT コメント 空白行の削除 ( 深い意味は無い ) AC_PREREQ の削除 ( 深い意味は無い ) AC_INIT の編集 ( 名前 バージョン メールアドレス ) AM_INT_AUTOMAKE 追加 (GNU じゃないから foreign) AC_PATH_PROG 追加 (pkg-config の存在を調べる ) PKG_CHECK_MODULES 追加 (gtk+-2.0 を調べる ) 非常に簡単

autoreconf を実行する $ ls Makefile.am autoscan.log configure.ac configure.scan hello_gtk.c $ rm autoscan.log configure.scan $ ls Makefile.am configure.ac hello_gtk.c $ autoreconf -i configure.ac:3: installing `./install-sh' configure.ac:3: installing `./missing' Makefile.am: installing `./depcomp' $ ls Makefile.am aclocal.m4 configure depcomp install-sh Makefile.in autom4te.cache configure.ac hello_gtk.c missing configure スクリプトができちゃった

configure で Makefile を作る $./configure --prefix=$home インストール先はとりあえず $HOME にしよう $./configure --help ヘルプが表示されます! しかも 機能がいっぱい! $ make $ make install インストールできちゃった!

Makefile を使ってみよう $ make clean ビルドされたファイルを削除 $ make uninstall インストールされたファイルを削除 $ make dist tar 玉を作る (hello_gtk-0.0.1.tar.gz) $ make distcheck tar 玉が使えるかどうかまで調査 他にもいろいろあります!

詳細は GCC Make info 読め man 読め ググれ Autoconf Automake info 読め ググれ pkg-config man 読め README 読め ググれ

Momonga Linux 6 では GCC 4.3.3 Make 3.81 Autoconf 2.63 Automake 1.11 pkg-config 0.23 7 月末頃リリース予定 (?) バージョン変更あり