トップページ>>>「ぷろぐらみんぐ」目次

tmakeのインストールと動作確認

初版作成:2002/12/25

注意

2008/11月現在、実に6年前のドキュメントになっています。「昔はこうしていた」という参考としてご利用下さい。

目次

  1. 前書き
  2. 本題
  3. 後書き或いは感想

前書き

 tmakeはQtプログラミングに欠くことのできないミニツールです。カレントディレクトリ内に存在するソースコードからMakefile を自動的に生成してくれるツール群で、RPMではアーキテクチャの指定がありません。つまり、OSは何でも良いわけです。
 tmakeはprogenというツールも提供してくれます。tmakeとprogenは共にPerlスクリプトです。

 正確に言うと、まずprogenによって*.proというファイルを生成します。
 *.proはコンパイルするソースコードやその他tmakeの使うオプションが記述されています。
 tmakeは*.proを元にしてMakefileを生成してくれます。
 あとはmakeを実行すれば、Qtプログラミングが簡単にできます。

 思いつきですが、今後KDEの開発環境を使わない、tmakeをメインにしたQt開発を「Pure Qt Programming」と呼ぶのも良いかも。

 で、このtmakeですが多くのディストリビューションではQt関連のパッケージには含まれていません。
 本家のTrolltechでもqtとはバンドルせずに、独自に作ったQtプログラミング用ミニツールとして提供しています。
 したがって、Qtプログラミングをするには最初にtmakeをインストールしておくべきです。

 先ほども書きましたが実体はシェルスクリプトなのでコンパイルも必要ありません。
 ただ、あらかじめQtがインストールされいることを確認してください。Qtがインストールされていないと、tmakeに付属して くる動作確認用サンプルプログラムをコンパイルできないからです。
目次に戻る

本題

  1. tmakeの入手
  2. インストール
  3. 動作確認

tmakeの入手
「本題」に戻る

 現時点(2002/12/25)での最新バージョンは tmake-1.8 です。

 TrolltechのFTPサーバーからダウンロードします。
tmakeのホームページはこちら。
 FTPサーバーは
ftp://ftp.trolltech.com/freebies/tmake/

 注意:通常のHPブラウザからではFTPサーバーにアクセスできても、ディレクトリ内容をみれません。
 また、多くのLinuxディストリビューションに付属してくるgFTPクライアントも正常にアクセスできません。
 Trolltechに問い合わせた結果、TrolltechのFTPサーバーとの相性が悪いらしくコマンドラインftpによるアクセスを奨められました。
 下にftpコマンドを使ったFTPサーバーとのやりとりの記録を残しておきます。

[fenjin@seisyuu fenjin]$ ftp
ftp> open ftp.trolltech.com
Connected to ftp.trolltech.com.
220-You are user number 11 of 200 allowed.
220-Setting memory limit to 1024+1024kbytes
...
220 You will be disconnected after 1800 seconds of inactivity.
Name (ftp.trolltech.com:fenjin): anonymous
331 Any password will work.
Password:
230 OK.  Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> ls
502-PORT/EPRT is disabled for security reasons.
502 Please use PASV/EPSV instead ("passive on")
ftp: bind: Address already in use
ftp> passive on
Passive mode on.

ftp> cd freebies/tmake/
...
250 Changed to /freebies/tmake
ftp> ls
227 Passive mode OK (80,232,38,140,46,160)
150 Accepted data connection from 61.209.207.204:55156
total 1
drwxrwxr-x   2 hanord   56          1024 Jan  6  2000 old-releases
drwxrwxr-x   2 hanord   56          1024 Oct 11  1999 snapshots
-rw-r--r--   1 root     56         64163 Nov 29 01:55 tmake-1.10.tar.gz
...
-rw-rw-r--   1 aavit    56        634972 Jan  2  2001 tmake-1.7.zip
-rw-r--r--   1 mike     56         47410 Nov  1  2001 tmake-1.8.tar.gz
-rw-r--r--   1 mike     56        645724 Nov  1  2001 tmake-1.8.zip
226-Options: -l
226 17 matches total

ftp> get tmake-1.8.tar.gz
local: tmake-1.8.tar.gz remote: tmake-1.8.tar.gz
227 Passive mode OK (80,232,38,140,46,160)
150-Accepted data connection from 61.209.207.204:55157
150 46.3 kbytes to download
226-File written successfully
226 0.008 seconds (measured by the server), 0.00 Kb/s
47410 bytes received in 1.91 secs (24 Kbytes/sec)
ftp> bye

 ftpコマンドを実行した時点でのカレントディレクトリ内に、tmake-1.8.tar.gzが出現しているはずです。


インストール
「本題」に戻る

 ユーザーのホームディレクトリの直下にtmakeがダウンロードできたものとします。(/home/****/tmake-1.8.tar.gz)
 ここから解凍するわけですが・・・パスの指定がどうなっているか確認して置いてください。
 もしも/usr/localとかにインストールできないようであれば、ホームディレクトリ内で直接解凍しちゃって、シェルのパス指定で ホームディレクトリのtmakeを指定することも可能です。
 というわけで、今回はそれで行きます。どちらにせよパス指定はして置いた方が便利ですし。

$ pwd
/home/****
$ tar zxvf tmake-1.8.tar.gz
...
...
$ ls
...
tmake-1.8/
tmake-1.8.tar.gz
...
$ cd tmake-1.8; ls
CHANGES  LICENSE  README  bin/  doc/  example/  lib/
$ cd bin/; ls
progen*  tmake*  tmake_win

 この後、.bashrcとか.loginとかでPATH変数に /home/****/tmake-1.8/bin を加えておきます。
 再ログインした後、
[fenjin@seisyuu fenjin]$ tmake
Usage:
    tmake [options] project-files
Options:
    -e expr    Evaluate expression, ignore template file
    -nodepend  Don't generate dependency information
    -o file    Write output to file
    -t file    Specify a template file
    -unix      Create output for Unix (auto detects)
    -v         Verbose/debug mode
    -win32     Create output for Win32 (auto detects)
 と表示されればオッケーでしょう。表示されなければ tmake-1.8/bin/ 内で試します。それで表示されるようならPATH指定が 間違っている可能性が高いです。それでも表示されなければファイルが壊れていた可能性があるので、ダウンロードしなおして ください。

 同様にprogenコマンドも試します。
[fenjin@seisyuu fenjin]$ progen --help
Usage:
    progen [options] [files]
Options:
    -lower   Lower-case letters filenames (useful for non-Unix)
    -n name  Specify a project name (= TARGET)
    -o file  Write output to "file"
    -t file  Specify a template file other than qtapp
    -d directory Search for files in specified directory and subdirectories[fenjin@seisyuu fenjin]$
 と表示されれば問題ありません。最後の改行がなんか変ですが、動作に支障はありません。

 さて、tmakeを解凍したときに example/ ディレクトリがありました。この中に動作確認用のミニプログラムのソースコードが 納められています。実際にコンパイルしてみて、きちんと実行できるか確認します。


動作確認
「本題」に戻る

 exampleディレクトリの内容を確認します。
[fenjin@seisyuu fenjin]$ cd tmake-1.8/example/
[fenjin@seisyuu example]$ ls
hello.cpp  hello.h  hello.pro  main.cpp  wc.t

 既に *.pro ファイルが出来てしまっています。・・・が。ちょっとここでprogenの確認をするためにも*.proを作り直 してみましょう。hello.pro を適当にリネームした後・・・
$ mv hello.pro hello_pro

progenは -n オプションで最終的なプログラム実行ファイル名を。-o で生成するproファイル名を指定します。

$ progen -n hello -o hello.pro
$ ls
hello.cpp  hello.h  hello.pro  hello_pro  main.cpp  wc.t

比べてみましょう。

$ diff hello.pro hello_pro
6d5
< INTERFACES    =
$
 progenで生成し直したものには「INTERFACES」オプションが含まれているようです。このオプションの詳細はまだわかりません。 (シェルスクリプト読む気力がない)とにかく、生成できていればまあオッケーです。

 ではhello.proをtmakeに渡して、Makefileを生成させます。-o でメイクファイルの出力ファイル名を指定します。指定しないと 標準出力に流れていきます。
$ tmake -o Makefile hello.pro
$ ls
Makefile  hello.cpp  hello.h  hello.pro  hello_pro  main.cpp  wc.t

Makefileが生成されました。このまま make に突入します。

$ make
g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/lib/qt/include -o hello.o hello.cpp
g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/lib/qt/include -o main.o main.cpp
/usr/lib/qt/bin/moc hello.h -o moc_hello.cpp
g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/lib/qt/include -o moc_hello.o moc_hello.cpp
g++  -o hello hello.o main.o moc_hello.o  -L/usr/lib/qt/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
$ ls
Makefile  hello*  hello.cpp  hello.h  hello.o  hello.pro  hello_pro  main.cpp  main.o  moc_hello.cpp  moc_hello.o  wc.t

 無事実行ファイル hello が生成されたようです。mocファイルというのが新たに作られています。これは「メタオブジェクトコンパイラ (Meta Object Compiler)」によって生成されたファイルです。中身は、Qtがシグナルとスロットを実現するために独自に定義した マクロの展開とか、Qt独自のプロパティシステムとかいろいろ展開されたものらしいですがよく分かんないッス。

 下が、hello の実行結果ウインドウです。文字が泳いでウインドウ内部をクリックするとプログラムは終了します。



 これでtmake, progenのインストールは完了です。お疲れさまでした。
 それでは、Qtプログラミングの世界を私と一緒に探検していかうではありませんか。

目次に戻る

後書き或いは感想

 これで一通りの準備は整いました。
 では、ぼちぼちチュートリアルを消化していくとします・・・。

目次に戻る

トップページ>>>「ぷろぐらみんぐ」目次