[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
コマンドライン引数を構文解析するCの関数を生成するためgengetoptを使用し
ている場合,これらの生成された関数が,実際にコマンドラインを読み込み,
それを構文解析するために,getopt_long
を使用していることを知って
おく必要があります.この関数は,通常標準Cライブラリの一部ですが,実装に
よっては含まれていない可能性があります.しかし,これは問題にはなりませ
ん.我々は,getopt_long関数を実際に実装しているCのファイルを提供してい
ます.`getopt.c',`getopt1.c'そして`gnugetopt.h'です.こ
れらのファイルは,`<install prefix>/share/gengetopt'ディレクトリで
見つかり,`<install prefix>'はコンパイル時に指定したものになります.
プレフィクスを指定しなかった場合は`/usr/local'がデフォルトです.バ
イナリ形式のgengetoptをダウンロードした場合,プレフィクスは
`/usr/local'または`/usr'になります.
`gnugetopt.h'を`getopt.h'に名前を変更し,これらのファイルをコ ンパイルし,プログラムの実行形式にリンクすることが可能です.しかし, automakeとautoconfを使用している場合,より簡潔な解決方法があります.以 下のURLからマクロをダウンロードしてください.
http://www.gnu.org/software/ac-archive/m4source/adl_func_getopt_long.m4
そして,`acinclude.m4'にそれを追加して下さい.このマクロは, gengetoptのソースの`acinclude.m4'にもあります.
このマクロはgetopt_long関数がCライブラリかどうかを調査し,そうでない場
合は`getopt.o'と`getopt1.o'を実行形式にリンクするオブジェクト
ファイルに追加します(LIBOBJS
).
そして,ソースディレクトリの`Makefile.am'で,LIBOBJS
の内容
に,getopt_longを使用する必要があるプログラムのLDADD
を追加する必
要があります.例えば,プログラム`foo'がgetopt_longを使用する必要が
ある場合,以下の行を追加する必要があります.
foo_LDADD = @LIBOBJS@ |
さて,これらのファイルはコンパイルされ,必要がある場合だけプログラムに リンクされます.
更に,`getopt.c',`getopt1.c',そして`gnugetopt.h'を配布
物に追加する必要があります.これらのファイル名をfoo_SOURCES
の中
身に書く必要はありませんが,`gnugetopt.h'はEXTRA_DIST
に追加
する必要があります.
EXTRA_DIST = gnugetopt.h |
gengetoptの`configure.in'と`src/Makefile.am'を見てみると良い でしょう.それらは両方とも,ここで記述しているテクニックを使用していま す.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Akihiro Sagawa on November, 2 2005 using texi2html 1.70.