初めての configureスクリプト作成

linux で GNU のツールを インストールするときなどに

を実行したりしますよね?今回の話題は、上記の./configure のスクリプト・ファイルを作成する事です。

awin を公開するにあたり、調べてみた結果のメモ書きです。何せ初めてなもので、勘違い等あるかと思いますがご容赦を。

【非常に簡単な configure スクリプトの作成までの手順】


前提:



例の説明:



作業:


  1. ディレクトリの準備(ターミナルでは%は入力しない)
  2. 作業中にたくさんのファイル/ディレクトリが作られるので、メンテ等しているディレクトリとは別のディレクトリを用意して作業した方が良いと思う

    参考:UNIX 系 OS の場合の一般的な添付ファイル類

  • configure.acを作成する( [1] などは行番号でファイルには記述しない,ターミナルでは%は入力しない)
  • ターミナルから

    configure.ac


    [1]# -*- Autoconf -*-
    [2]# Process this file with autoconf to produce a configure script.
    [3]
    [4]AC_PREREQ([2.69])
    [5]AC_INIT([awin], [2.00])
    [6]AM_INIT_AUTOMAKE([foreign 1.14.1])
    [7]AC_CONFIG_SRCDIR([awin.c])
    [8]AC_CONFIG_HEADERS([config.h])
    :::::::(以下略)


    注:

    1. [5] パッケージ名とバージョンを指定すると、make dist した時の圧縮ファイル名がそれっぽくなる
    2. この例だと「awin-2.00.tar.gz」なんてものになる

    3. [6] 行追加
    4. 1.14.1 は automake のバージョン
      %automake –version を実行して確認
      foreign はとりあえず固定。GNU 準拠の諸々のファイル等が必須ではなくなるらしい

    5. [7] ヘッダーファイルになっていたので、メインのCに変更しておいた
    6. しなくてもOKみたいだったけど、気持ち悪いよね。
      ソースディレクトリにだけあるファイル名であれば良いみたい
      なんとなく納得しがたい仕様だけど(ディレクトリ名を指定させれば良いのに…)、決まりとして従う

    7. [8] このヘッダーは作ったソースではない。この一連の作業で使用するツールが作成・使用するもの
    8. 逆に言うと、こういう名前のヘッダーファイルは自分が作るプログラムでは使わないほうが良いのかも知れない
      重複したら、ここで別のを指定すれば、きっと良いと思うけど、未確認
      なぜ、configure.h なんてのにしなかったんだろう?
      いや、もっと言うと、ツールで作るものは、最終的な configure スクリプト以外は全てサブディレクトリに作ってくれる仕様だったら良いのに。
      その際はドットディレクトリにして欲しい。控えめになれよと思う…

  • Makefile.amを作成する( [1] などは行番号でファイルには記述しない,ターミナルでは%は入力しない)
  • ターミナルから
    %leafpad Makefile.am& (テキストエディタで編集)
    Makefile.am


    [1]bin_PROGRAMS = awin
    [2]awin_SOURCES = awin.c awin.h mymem.c mymem.h mywin.c mywin.h
    [3]EXTRA_DIST = README-JP-UTF8.txt


    注:

    1. [1] “bin_PROGRAMS” は固定
    2. = の右辺は、Make で生成すべきモジュール等を半角スペース区切りで列挙する

    3. [2] “xxxx_SOURCES” の xxxx の部分は、[1] で指定した右辺を複数あれば個々に指定
    4. = の右辺は、それを生成するために必要となるソースを単純に半角スペース区切りで列挙
      列挙したものの間の依存関係はここでは気にしないで良い
      最終的に作られた Makefile は読んでも良くわからなかったが、実験すると依存関係を把握している模様
      ソースやヘッダーを読んで把握しているみたい
      この事を知らずに、どうやって依存関係を伝えるんだ?と、長い間ネットを徘徊していた…
      入門用の解説だと、分割コンパイルの例が案外と載っていない。複雑なのは、初めての私には理解しづらかったし… awinは例示するには、ちょうど良い規模なのかなと思い、この記事にしました

    5. [3]その他必要なファイル(ディレクトリもOK)はEXTRA_DISTの右側に半角スペース区切りで記入
    6. COPYING 等は勝手に含まれるみたいで記述は要らないみたい(便利だけど分かりにくいよね)
      何が自動で含まれるかは、automake –help を実行すれば、確認できる。
      [例]

  • configure スクリプトを生成する(ターミナルで%は入力しない)
  • 以上で、./configure すると Makefile は作成される。
    これで、 make して make install または make install-strip 、make dist できようになった。
    ( この例で、make install や make install-strip を完了させるには root権限が必要 )

    ちなみに、make dist で作成された圧縮ファイルをコマンドラインで解凍するには次のようにする。
    %tar zxf awin-2.00.tar.gz

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA