(57)【要約】【課題】ターゲットやビルド処理の仕方の変更に簡単に対処し得るビルド処理方法を提供する。【解決手段】ソフトウェアにおける各モジュールを構成するソースファイルを、該ソースファイルの識別情報を用いてモジュール毎に記述する複数のモジュール構成記述部１０６〜１０９と、複数のモジュール構成記述部を識別する識別情報を用いて、結合すべき前記モジュールを記述するモジュール結合記述部１０３，１０４と、モジュール構成記述部、モジュール結合記述部の識別情報と関連付けてビルド処理の方法を記述するビルド処理記述部１１４，１１８とを有する。【選択図】図１
2008003841.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアにおける各モジュールを構成するソースファイルの識別情報をモジュール毎に記述する複数のモジュール構成記述部と、前記複数のモジュール構成記述部を識別する識別情報を用いて、結合すべき前記モジュールを記述するモジュール結合記述部と、各ターゲットに対して、前記モジュール構成記述部または前記ソースファイルの識別情報と関連付けてビルド処理の仕方を記述するビルド処理記述部とを参照するビルド処理方法であって、
前記ターゲット及び前記モジュール結合記述部の指定を受け付ける工程と、
指定された前記ターゲットに対応する前記ビルド処理記述部の内容を読み込む工程と、
指定された前記モジュール結合記述部で記述された結合すべき前記複数のモジュール構成記述部の内容を読み込む工程と、
読み込まれた前記ビルド処理記述部の内容及び前記複数のモジュール構成記述部の内容に基づいてビルド処理を実行する工程と
を有することを特徴とするビルド処理方法。
【請求項２】
前記ビルド処理記述部は、ビルド処理を行うプログラムの所在を示すプログラム記述部と、ビルド処理部において適用すべきルール記述部と、処理におけるパラメータを指定するパラメータ記述部とを備えることを特徴とする請求項１に記載のビルド処理方法。
【請求項３】
前記ビルド処理記述部は、実際のビルド処理のための入出力ファイルの識別情報の一部が、前記モジュール構成記述部の識別情報で置換されるべきダミー情報で記述されていることを特徴とする請求項１又は２に記載のビルド処理方法。
【請求項４】
請求項１〜３の何れかに記載のビルド処理方法を用いてビルド処理を行うビルド処理装置。
【請求項５】
請求項１〜３の何れかに記載のビルド処理方法をコンピュータに実行させるためのコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードに基づいて実行可能なプログラムを生成するためのビルド処理技術に関する。
【背景技術】
【０００２】
従来、大規模なソフトウェアを開発する場合に、全体のソフトウェアを独立して設計可能な小さな単位のモジュールに分割し、モジュール毎にソースコードを記述してソースファイルとして保存している。そして、このソースファイルを他のソフトウェアで共通に利用できるようにしている。
【０００３】
このようなモジュールに係るソースファイルに対してコンパイル、リンクなどを行うことによりビルド処理して、実際に動作するプログラムを生成する場合には、次のような情報をコンピュータに指定する必要がある。この指定情報としては、ビルド処理（コンパイル／リンク）対象のソースファイルのファイル名、それらソースファイルに対するビルド処理のルールや詳細な処理方法がある。ここで、ビルド処理のルールとは、どのような処理を行なうかを示すルールである。また、詳細な処理方法とは、最適化コンパイルや、インクルードパスなどである。
【０００４】
このようなビルド処理に関する情報をコンピュータに指定する方法として、Ｍａｋｅコマンドを用いる方法が一般に知られている。
【０００５】
このｍａｋｅコマンドは、図１０に例示したような内容のＭａｋｅｆｉｌｅを参照してビルドを行うものである。なお、図１０において、行頭に示した「１．」等の数字は、説明のために付した行番号である（図１１も同様）。
【０００６】
図１０の例では、９行目に処理対象のファイルのファイル名が記述され、１〜３行目、５〜８行目にビルド処理のルールが記述され、４行目に詳細な処理方法が記述されている。
【０００７】
このようなｍａｋｅコマンドを利用してモジュール毎に設計／実装を行う場合、一般に、１つのモジュールに対して１つのディレクトリを作成する。そして、そのディレクトリにモジュールを構成する全ソースファイルと１つのＭａｋｅｆｉｌｅを配置する。このＭａｋｅｆｉｌｅでは、モジュールの全ソースファイルを処理するように記述する。
【０００８】
ところで、ソフトウェア開発において、１つのモジュールに対して複数のビルド処理の仕方を指定したい場合がある。例えば、機器制御の組込みソフトウェア開発においては、同じモジュールに係るソースファイルを、旧製品ＣＰＵ用、新製品ＣＰＵ用、開発ＰＣ用等の複数のターゲットシステム向きにコンパイルする場合である。以下、「ターゲットシステム」を単に「ターゲット」と記述する。また、ターゲットとは、ビルド処理により生成すべき一連のプログラムという意味も包含する。
【０００９】
しかしながら、前述のＭａｋｅｆｉｌｅでは、ビルド処理の仕方を１通りしか記述できない。このため、所定のモジュールに係るソースファイルを複数のターゲット向きにコンパイルする場合は、そのモジュールに対してターゲット毎の複数のＭａｋｅｆｉｌｅを用意する必要がある。
【００１０】
また、複数のＭａｋｅｆｉｌｅを用意したとしても、以下のような問題がある。第１に、それら複数のＭａｋｅｆｉｌｅにおいて処理対象のファイルは一致している必要がある。従って、ソースファイルを追加する場合は、全てのＭａｋｅｆｉｌｅに対して同じソースファイルを追加する必要がある。
【００１１】
第２に、同じターゲット用のＭａｋｅｆｉｌｅにおいては、各モジュール間でビルド処理の仕方の記述を統一しておく必要がある。この統一化は、人手を介して行うことになり、煩雑であるとともに誤りが混入する危険性がある。
【００１２】
さらに、アセンブリソースコードなど、ターゲットのＣＰＵに依存したソースコードも存在する。このようなターゲットの種別に依存するソースコードは、ターゲットの種別ごとに別のソースファイルに記述される。Ｍａｋｅｆｉｌｅに記述する際には、それらのソースファイルは、ターゲット毎に異なるファイル名を記述する必要があり、この記述も人手を介して行うことになり、煩雑であるとともに誤りが混入する危険性がある。
【００１３】
また、複数のモジュールに分割して、それらモジュール毎にＭａｋｅｆｉｌｅを作成し、それらの各モジュールを結合して１つのプログラムを作成する場合には、また別の問題がある。
【００１４】
図１１（Ａ）〜（Ｃ）は、そのような場合のＭａｋｅｆｉｌｅの例である。ここでは、モジュール毎にディレクトリを用意し、ディレクトリ毎にソースファイルとＭａｋｅｆｉｌｅを持つ場合を想定している。図１１（Ａ）は、ＡａａモジュールのＭａｋｅｆｉｌｅを示している。このＭａｋｅｆｉｌｅのファイルパス名は、Ａａａ／Ｍａｋｅｆｉｌｅとなっている。図１１（Ｂ）は、ＢｂｂモジュールのＭａｋｅｆｉｌｅを示している。このＭａｋｅｆｉｌｅのファイルパス名は、Ｂｂｂ／Ｍａｋｅｆｉｌｅとなっている。
【００１５】
また、図１１（Ｃ）は、ＡａａとＢｂｂの２つのモジュールに係るオブジェクトファイルを纏めるべくリンクさせるためのＭａｋｅｆｉｌｅを示している。図１１（Ｃ）のＭａｋｅｆｉｌｅでは、Ａａａ，Ｂｂｂの２つのモジュールに係るオブジェクトファイルをリンクさせる。そのために、それらモジュールのビルド処理の結果として、どのようなオブジェクトファイルが在るかを記述する必要がある（図１１（Ｃ）の２行目の記述）。
【００１６】
また、各モジュールの内部がどのようなファイルで構成されているかの詳細は、そのモジュール内で閉じた情報として管理されている。従って、それらモジュールを下位のモジュールとして利用する図１１（Ｃ）のＭａｋｅｆｉｌｅ等の上位のＭａｋｅｆｉｌｅでは、本来、それら下位モジュールの内部構成を意識すべきではない。しかしながら、Ｍａｋｅｆｉｌｅでは、モジュールの構成を外部に知らせることができないため、下位モジュールの内部構成を上位モジュールに係るＭａｋｅｆｉｌｅに記述せざるを得なくなってしまっている。
【００１７】
さらに、複数のモジュールの結合からなる大規模なプログラムを複数のターゲット用にビルド処理する方法が、下記の特許文献１に開示されている。しかし、この特許文献１に係る方法では、使用すべきモジュールを選択するだけでなく、ターゲット毎に人手により多数のデータを入力する必要があり、誤りが混入する危険性がある。また、使用すべきモジュールの追加や変更がある毎に上記の入力操作を行う必要がある。
【特許文献１】特開２０００−２３５４４４
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、このような背景の下になされたもので、その目的は、ターゲットやビルド処理の仕方の変更に簡単に対処し得るビルド処理方法を提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成するため、本発明は、ソフトウェアにおける各モジュールを構成するソースファイルの識別情報をモジュール毎に記述する複数のモジュール構成記述部と、前記複数のモジュール構成記述部を識別する識別情報を用いて、結合すべき前記モジュールを記述するモジュール結合記述部と、各ターゲットに対して、前記モジュール構成記述部または前記ソースファイルの識別情報と関連付けてビルド処理の仕方を記述するビルド処理記述部とを参照するビルド処理方法において、前記ターゲット及び前記モジュール結合記述部の指定を受け付ける工程と、指定された前記ターゲットに対応する前記ビルド処理記述部の内容を読み込む工程と、指定された前記モジュール結合記述部で記述された結合すべき前記複数のモジュール構成記述部の内容を読み込む工程と、読み込まれた前記ビルド処理記述部の内容及び前記複数のモジュール構成記述部の内容に基づいてビルド処理を実行する工程とを有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ターゲットやビルド処理の仕方の変更に簡単に対処し得るビルド処理方法を提供することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を実施するための最良の形態を、図面に基づいて説明する。
【００２２】
図１２は、本発明の実施の形態に係るコンピュータのハードウェア構成を示すブロック図である。このコンピュータは、ＣＰＵ１２０１、情報を表示する表示装置１２０２、キーボードやマウスなどの入力装置１２０３、ＲＡＭなどの一次記憶装置１２０４、ＨＤＤなどの二次記憶装置１２０５、通信装置１２０６を有している。以下では、一次記憶装置１２０４は単にメモリ１２０４とも称する。また、これらデバイスは、相互に通信可能にバスライン１２０７を介して接続されている。ＣＰＵ１２０１は各部を制御し、後述する処理手順に対応するプログラムを実行する。このプログラムは二次記憶装置１２０５から一次記憶装置１２０４に読み出されて実行される。
【００２３】
図１は、本発明の実施の形態に係るビルド処理方法を示す図である。図１のビルド処理方法に係る記述内容は、例えば、図１２に示したコンピュータ内で二次記憶装置１２０５のハードディスク等の記憶媒体に記憶されている。
【００２４】
図１に示したように、ビルド指令情報１０１は、ビルド対象物記述部１１０とターゲット記述部１０２とを用いて、所望のビルド対象物と所望のターゲットのためのビルド処理方法を指定している。なお、ビルド指令情報１０１における具体的なビルド処理方法の指定の仕方は、後述する。
【００２５】
ビルド対象物記述部１１０は、モジュール構成記述部１０６〜１０９とモジュール結合記述部１０３，１０４とにより構成されている。また、ターゲット記述部１０２は、複数のビルド処理記述部１１４，１１８により構成されている。
【００２６】
ビルド対象物記述部１１０のモジュール構成記述部１０６〜１０９では、ビルド処理に使用される各モジュールそれ自体が記述されることはなく、それらモジュールを構成するビルド対象物の識別情報（ソースファイルの名称など）だけが記述されている。また、モジュール結合記述部１０３，１０４は、どのモジュールを結合して実行プログラムを作成すべきかを記述する部分である。このモジュール結合記述部１０３，１０４においても、モジュール構成記述部１０６〜１０９の識別情報、すなわちモジュール構成記述部１０６〜１０９の名称だけが記述されている。
【００２７】
ターゲット記述部１０２は、各ターゲットに１対１に対応するビルド処理記述部１１４，１１８を有している。これらビルド処理記述部１１４，１１８は、それぞれビルド処理プログラム記述部１１１，１１５、ビルド処理適用ルール記述部１１２，１１６、ビルド処理パラメータ記述部１１３，１１７により構成されている。
【００２８】
ビルド処理プログラム記述部１１１，１１５には、ビルド処理（コンパイルなど）を行うプログラムの所在を示す情報、例えば実際にコンパイルを行なうコンパイラのパス名などが含まれている。また、ビルド処理適用ルール記述部１１２，１１６には、ビルド対象物記述部１１０に記述されているビルド対象物の特徴に応じて、実際のビルド処理において入力ファイルや出力ファイルを特定する方法、ビルド処理を行なうコンパイラを特定する方法が記述されている。また、ビルド処理パラメータ記述部１１３，１１７には、実際のビルド処理においてビルド処理を行うコンパイラに対して指定する情報、例えば最適化オプションやマクロ定義などの情報が記述されている。
【００２９】
前述のように、ビルド処理記述部１１４，１１８は、ターゲットごとに用意されるものである。また、ターゲット記述部１０２においては、それらターゲット毎に、そのターゲット名称とそのターゲットに対して適用すべきビルド処理記述部１１４，１１８の名称とを対で記憶している。
【００３０】
このような構成に基づいて、所望のターゲットのためのビルド指令情報１０１としては、ビルド対象物記述部１１０のモジュール結合記述部１０３，１０４と、ターゲット記述部１０２に記述されているターゲット名称との組を指定するようにしている。
【００３１】
従って、或るモジュールの内部構成が変化した場合は、モジュール構成記述部１０６〜１０９の記述を変更するだけで対処することができる。また、或るターゲットのビルド処理方法が変化した場合は、そのターゲットに対応するビルド処理記述部１１４，１１８の記述を変更するだけで対処することができる。さらに、ターゲットが追加された場合は、新たにビルド処理記述部を記述し、ターゲット記述部１０２に、そのターゲットと新たなビルド処理記述部の名称を記述すればよい。
【００３２】
このように、モジュールの内部構成やターゲットのビルド処理方法の変化、ターゲットの追加が発生したとしても、必要最小限の記述変更で対処することが可能となる。また、ターゲット毎に異なるソースファイルが存在していても、所望のターゲットに係るソースファイルを指定することができる。
【００３３】
次に、図１に示した各ブロックの具体的な内容を、図２〜図９を用いて説明する。
なお、図２〜図４に示した「１．」等の数字は、説明のために付した行番号である。
【００３４】
［ビルド処理記述部の記述例］
まず、ビルド処理記述部１１４，１１８の具体例を説明する。本実施の形態で例示する各記述内容は、図５に示すような階層ディレクトリ構成の中に配置されたテキストファイルとして保管する。なお、図５において記号「／」が行末に付加されているシンボルは、ディレクトリ名を表し、記号「／」が行末に付加されていないシンボルは、ファイル名を表している。また、図５に示した作業ディレクトリには、ビルド処理記述に係るファイル以外に、ソースファイル、コンパイラ／アセンブラに係るファイルのファイル名も記述されている。
【００３５】
なお、ビルド処理の設定内容は、上記の例のように個別のファイルに分割して保管しても、或いはデータベースとして保管してもよい。以下、このようなビルド処理に係る設定ファイルの内容例を説明する。
【００３６】
ターゲット記述部１０２は、図５に示したファイル「ｃｏｎｆｉｇ／ｔａｒｇｅｔ．ｃｏｎｆ」として構成され、このファイル「ｃｏｎｆｉｇ／ｔａｒｇｅｔ．ｃｏｎｆ」は、図２に示すような形で記述されている。図２において、１行目には、ターゲット名称として「ｗｉｎ３２ｐｃ」が記述されている。その２行目以降には、「ｗｉｎ３２ｐｃ」という名称のターゲットに係るビルド処理記述を指定するためのファイル名が記述されている。
【００３７】
すなわち、２行目には、ビルド処理プログラム記述部１１４，１１８に係るファイルのファイル名として、「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐｒｏｇｒａｍ．ｃｏｎｆ」が記述されている。また、３行目には、ビルド処理適用ルール記述部１１２，１１６に係るファイルのファイル名として、「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」が記述されている。さらに、４行目には、ビルド処理パラメータ記述部１１３，１１７に係るファイルのファイル名として、「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐａｒａｍｅｔｅｒ．ｃｏｎｆ」が記述されている。
【００３８】
なお、５行〜８行目には、１〜４行とは異なるターゲット「ｈ８−２６００Ｎ」に係る同様のターゲット記述がなされている。
【００３９】
図３（Ａ）は、ビルド処理プログラム記述部１１１，１１５に係るファイルの内容例を示している。この図３（Ａ）に示したファイルにおける記述は、図５における「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐｒｏｇｒａｍ．ｃｏｎｆ」に相当するものである。
【００４０】
図３（Ａ）のファイルでは、１行目に「ｅｎｖｉｒｏｎｍｅｎｔｖａｒｉａｂｌｅ」というシンボルが記述され、このシンボルにより、２行目以降の記述がビルドプログラム実行の際に必要な環境変数の設定情報であることが示されている。
【００４１】
２行目には、「ＰＡＴＨ」という名称の環境変数をどのように設定すべきかが記述されている。３行目には、「ｐｒｏｇｒａｍ」というシンボルが記述され、このシンボルにより、４行目以降の記述がビルド処理実行の際に使用すべきプログラムの指定情報であることが示されている。
【００４２】
４行目には、「ＣＯＭＰＩＬＥＲ」というシンボルに係るプログラムを実行する際には、「ｇｃｃ．ｅｘｅ」というプログラムファイルを起動するということが記述されている。５行〜６行目には、同様に、「ＡＳＳＥＭＢＬＥＲ」、「ＬＩＮＫＥＲ」というシンボルに係るプログラムには、それぞれ「ａｓ．ｅｘｅ」、「ｌｄ．ｅｘｅ」というプログラムファイルが対応することが記述されている。
【００４３】
図３（Ｂ）は、ビルド処理適用ルール記述部１１２，１１６に係るファイルの内容例を示している。この図３（Ｂ）に示したファイルは、図５における「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」に相当するものである。
【００４４】
図３（Ｂ）のファイルでは、１行目に「ｓｒｃ＊／＊．ｔａｒｇｅｔ．ｃ」という記述がなされている。この記述は、後述するモジュール結合記述部１０３，１０４およびモジュール構成記述部１０６〜１０９の中に現れるビルド対象の記述と一致させる文字列パターンを表している。そして、２行目〜４行目には、１行目の文字列パターンに一致したビルド対象に対して適用されるルールが記述されている。
【００４５】
すなわち、２行目には、１行目の文字列パターンに一致したビルド対象の記述、すなわち、ビルド処理対象の入力ファイルのファイル名が「＊１／＊２．ｗｉｎ３２ｐｃ．ｃ」であることが示されている。なお、このファイル名における「＊１」、「＊２」のような記述は、１行目の文字列パターンに一致した際に、「＊」に対応する文字列に置換されて展開される。
【００４６】
３行目には、ビルド処理の出力ファイル名が、入力ファイル名と同様の形式で記述されている。４行目には、ビルド処理に使用するプログラムが記述されている。なお、４行目に記述されている「ＣＯＭＰＩＬＥＲ」というシンボルは、図３（Ａ）の４行目に記述されたシンボルと一致しており、実際のビルド処理に際しては、「ｇｃｃ．ｅｘｅ」というプログラムファイルが起動される。
【００４７】
５行〜８行目、９行〜１２行目、１３行〜１６行目にも、１行〜４行目と同様に、他の文字列パターンに一致するビルド対象に対し、実際にビルド処理する際の入力ファイル名、出力ファイル名、プログラム名が記述されている。なお、１４行目に記述されている「＠」は、１行〜１３行目に係るビルド処理で出力された全ての出力ファイル名を総称するものである。
【００４８】
図３（Ｃ）は、ビルド処理パラメータ記述部１１３，１１７に係るファイルの内容例を示している。この図３（Ｃ）に示したファイルは、図５における「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐａｒａｍｅｔｅｒ．ｃｏｎｆ」に相当するものである。
【００４９】
図３（Ｃ）のファイルでは、１行目に「ＣＯＭＰＩＬＥＲ」という、ビルド処理を行うプログラムのシンボルが指定されている。ここで指示されている「ＣＯＭＰＩＬＥＲ」というシンボルは、図３（Ｂ）の４行目、８行目のシンボルと一致しており、実際のビルド処理に際しては、「ｇｃｃ．ｅｘｅ」というプログラムファイルが起動される。
【００５０】
２行目には、１行目のプログラムに対して、どのような条件の場合にどのような詳細パラメータを渡すべきかが記述されている。なお、２行目の「＄（ＩＮＰＵＴ）」、「＄（ＯＵＴＰＵＴ）」という記述は、それぞれ、このビルド処理の際に指示される入力ファイルおよび出力ファイルのファイル名に置換されて解釈すべきことを意味する。２行目の記述における「＄（ＩＮＰＵＴ）＝〜ＭｏｄｕｌｅＡ／＊．ｃ」は、入力ファイル名が「ＭｏｄｕｌｅＡ／＊．ｃ」に一致する場合には、１行目に記述したプログラムに対して、「：」以降の文字列を詳細なパラメータとして渡すべきであることを意味する。
【００５１】
３行目には、入力ファイル名が２行目の条件に一致せず３行目の条件に一致した場合の詳細パラメータが記述されている。４行〜５行目、６行〜７行目には、それぞれ図３（Ｂ）の「ＡＳＳＥＭＢＬＥＲ」、「ＬＩＮＫＥＲ」に係るビルド処理の詳細なパラメータが記述されている。
【００５２】
なお、本実施の形態では、ビルド処理記述部１１４，１１８の記述内容を図３（Ａ）〜（Ｃ）のように３つのファイルに分けて記述しているが、各記述をどのように分割してファイル化するかは任意であり、例えば、各記述を１つのファイルに纏めて記述することも可能である。
【００５３】
［ビルド対象物記述部の記述例］
次に、ビルド対象物記述部１１０の具体例を説明する。ビルド対象物記述部１１０の記述内容は、ビルド処理記述部１１４，１１８と同様に、図５に示したようなディレクトリに配置されたテキストファイルの形で保存される。
【００５４】
図４（Ａ）、（Ｂ）は、モジュール構成記述部１０６〜１０９に係るファイルの内容例を示している。図４（Ａ）に示したファイルにおける記述は、図５における「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」に相当するものである。
【００５５】
図４（Ａ）の記述は、図５に示したモジュール「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」を構成するビルド対象物として、「Ａｆｕｎｃ．ｃ」、「Ａｌｏｇｉｃ．ｓ」という名称の２つのモジュールが存在することを示している。
【００５６】
図４（Ｂ）に示したファイルにおける記述は、図５における「ＭｏｄｕｌｅＢ／Ｍｏｄｕｌｅｂ．ｍｏｄ」に相当するものである。この図４（Ｂ）の記述は、モジュール「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」を構成するビルド対象物として、「Ｂｆｕｎｃ．ｃ」、「Ｂｓｕｂ．ｔａｒｇｅｔ．ｃ」というという名称の２つのモジュールが存在することを示している。
【００５７】
図４（Ｃ）は、モジュール結合記述部１０３，１０４に係るファイルの内容例を示している。図４（Ｃ）に示したファイルにおける記述は、図５における「Ｂｕｉｌｄ／ｗｉｎ３２ｐｃ．ｍｏｄ」に相当するものである。図４（Ｃ）において、１行目と２行目には、結合すべきモジュール（モジュール構成記述部）のファイル名が記述されている。３行目には、モジュール構成記述部での記述と同様に、ビルド対象物として「ｗｉｎ３２ｐｃ−ｍａｉｎ．ｃ」という名称のモジュールが存在することが記述されている。４行目には、ビルド対象物として「ＰｒｏｇｒａｍＡＢ．ｅｘｅ」という名称のプログラムが存在することが記述されている。
【００５８】
次に、上記のビルド処理記述部１１４，１１８とビルド対象物記述部１１０の記述に基づく実際のビルド処理を、図６〜図８に従って説明する。この図６〜図８のビルド処理に係るプログラムは、二次記憶装置１２０５のハードディスク上に保存されており、メモリ１２０４に展開されてＣＰＵ１２０１により実行される。なお、図５に示した、ビルド処理記述部１１４，１１８とビルド対象記述部１１０に係るファイルと、ソースファイルやコンパイラプログラムも、同じハードディスクに保存されている。
【００５９】
操作者は、例えばビルド指令を行なうためのウインドウを表示装置１２０２上で開き、そのウインドウ上で、ターゲット名称、ビルド対象を示すモジュール結合記述部１０３，１０４に係るファイル叉はモジュール構成記述部１０６〜１０９に係るファイルの名称を入力装置１２０３を用いて入力する。これら入力されたビルド指令情報は、ＣＰＵ１２０１により読み込まれる（ステップＳ６０１）。ここでは、ターゲット名称として「ｗｉｎ３２ｐｃ」、ビルド対象を示すファイルとして「Ｂｕｉｌｄ／ｗｉｎ３２ｐｃ．ｍｏｄ」が指定されたものとして説明する。
【００６０】
次に、ＣＰＵはターゲット記述ファイル（上記した図２のｃｏｎｆｉｇ／ｔａｒｇｅｔ．ｃｏｎｆ）を読み込む。更に、ＣＰＵ１２０１は、ステップＳ６０１で読み込んだターゲット名称に対するビルド処理プログラム記述ファイル名、ビルド処理適用ルール記述ファイル名、ビルド処理パラメータ記述ファイル名で示されるファイル内容を読み込む（ステップＳ６０２）。
【００６１】
上記のように、ターゲット名称「ｗｉｎ３２ｐｃ」が指定された場合は、具体的には、ビルド処理プログラム記述に係るファイルである「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐｒｏｇｒａｍ．ｃｏｎｆ」の内容（図３の（Ａ））を読み込む。また、ビルド処理適用ルール記述に係るファイルである「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」の内容（図３の（Ｂ））を読み込む。さらに、ビルド処理パラメータ記述に係るファイルである「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐａｒａｍｅｔｅｒ．ｃｏｎｆ」の内容（図３の（Ｃ））を読み込む。そして、ＣＰＵは、これら読み込んだファイルの内容をメモリ１２０４に保持しておく。
【００６２】
次に、ＣＰＵは、ステップＳ６０１で指定されたビルド対象を示すファイル名「Ｂｕｉｌｄ／ｗｉｎ３２ｐｃ．ｍｏｄ」に基づいて、そのファイルの内容（図４の（Ｃ））、すなわちビルド対象記述を読み込む（ステップＳ６０３）。そして、ＣＰＵ１２０１は、指定されたターゲット用のビルド処理を実行する（ステップＳ６０４）。なお、ステップＳ６０３，Ｓ６０４の処理の詳細は、後述する。
【００６３】
なお、上記の例では、ステップＳ６０１〜Ｓ６０３の処理により、図９に示すデータが得られてメモリ１２０４に保存される。
【００６４】
次に、図６のステップＳ６０３におけるビルド対象記述の読み込み処理の詳細を、図７のフローチャートに基づいて説明する。
【００６５】
ビルド対象記述の読み込み処理では、ＣＰＵは、まず、与えられたファイル名のファイルを１行目から順に１行を読み込む（ステップＳ７０１）。上記の指定例の場合は、最初に、図４の（Ｃ）に示すファイル「Ｂｕｉｌｄ／ｗｉｎ３２ｐｃ．ｍｏｄ」の１行目を読み込むことになる。
【００６６】
次に、ＣＰＵ１２０１は、行判定を行う（ステップＳ７０２）。この行判定では、行を読むことができたか（エンドオブファイルに達していなかったか）、或いは、「ｓｒｃ」、又は「ｏｕｔｐｕｔ」で始まる行を読み込んだのか、「ｍｏｄｕｌｅ」で始まる行を読み込んだのかを判定する。
【００６７】
上記の指定例では、１行目の内容である「ｍｏｄｕｌｅ．．／．．／ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」という内容を読み込んでいるため、「ｍｏｄｕｌｅ」で始まる行を読み込んだと判定する。このように「ｍｏｄｕｌｅ」で始まる行を読み込んだと判定した場合は、ＣＰＵ１２０１は、処理をステップＳ７０４に進める。
【００６８】
このステップＳ７０４では、ＣＰＵ１２０１は、「．．／．．／ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」、すなわち、「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」というファイルを読み込むことになる。このステップＳ７０４の処理を行った後は、ＣＰＵ１２０１は、ステップＳ７０１に戻り、与えられたファイル名のファイルの次の行を読み込んで、ステップＳ７０２にて、その読み込み行について、上記の行判定を行う。
【００６９】
ＣＰＵ１２０１は、ステップＳ７０２にて、ステップＳ７０１で読み込んだ行が「ｓｒｃ」、又は「ｏｕｔｐｕｔ」で始まる行であると判定した場合は、ステップＳ７０３の入出力・処理決定を行う。例えば、図４の（Ａ）に示すファイル「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」の１行目の「ｓｒｃ  Ａｆｕｎｃ．ｃ」等の行を読み込んだ場合は、ステップＳ７０３の入出力・処理決定が行われる。
【００７０】
この入出力・処理決定では、ＣＰＵ１２０１は、ビルド対象物のビルド処理の仕方として、ビルド処理の入力ファイル、出力ファイル、処理プログラムと、その処理プログラムに与える詳細な指定情報を生成して保存する。
【００７１】
このステップＳ７０３における入出力・処理決定の詳細を、図８のフローチャートに基づいて説明する。
【００７２】
ＣＰＵ１２０１は、入出力・処理決定では、まず、図６のステップＳ６０２で読み込んで保持しておいたビルド処理記述の情報を参照して、図７のステップＳ７０１で読み込んだ行が、ビルド処理適用ルール記述（図３の（Ｂ））のうちのどのルールに一致するかを判定する（ステップＳ８０１）。
【００７３】
例えば、図７のステップＳ７０１でファイル「ＭｏｄｕｌｅＡ／ＭｏｄｕｌｅＡ．ｍｏｄ」の１行目を読み込んだ場合に、その１行目が「ｓｒｃ  Ａｆｕｎｃ．ｃ」であったとする。この場合、図３（Ｂ）に示したように、「ｓｒｃ  Ａｆｕｎｃ．ｃ」というパターンは、ファイル「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」の５行目のパターン（ｓｒｃ＊／＊．ｃ）に一致する。従って、この１行目で示しているビルド対象に対するビルド処理の入力ファイル、出力ファイル、処理プログラムとしては、当該ファイル「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」の６〜８行目に記述されているものに決定する。
【００７４】
次に、ＣＰＵ１２０１は、ビルド処理適用ルール記述における「ｉｎｐｕｔ＝」、「ｏｕｔｐｕｔ＝」の記述に基づいて、実際の入出力ファイル名を決定する（ステップＳ８０２）。例えば上記の例では、「ｓｒｃ  Ａｆｕｎｃ．ｃ」というパターンは、図３（Ｂ）のファイル「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｒｕｌｅ．ｃｏｎｆ」の５行目のパターンに一致している。従って、６行目の「ｉｎｐｕｔ＝＊１／＊２．ｃ」、７行目の「ｏｕｔｐｕ＝＊１／ｗｉｎ３２ｐｃ／＊２．ｏ」の「＊」を、「Ａｆｕｎｃ」に置換することで、実際に使用する入出力ファイル名を決定する。
【００７５】
なお、ビルド処理適用ルール記述の中に「＠」が含まれている場合は、ＣＰＵ１２０１は、それまでに出現した全てのビルド処理の出力ファイル名を羅列するような形で上記の置換を行う。
【００７６】
次に、ＣＰＵ１２０１は、下記のようにして処理方法を決定する（ステップＳ８０３）。すなわち、ＣＰＵ１２０１は、ビルド処理適用ルール記述における「ｐｒｏｇｒａｍ＝」の記述に基づいて、処理プログラムを示すシンボルを取得すると共に、ビルド処理プログラム記述の内容（図３の（Ａ））を介して、実際の処理プログラム名を取得する。さらに、ＣＰＵ１２０１は、処理プログラムを示すシンボルと、ステップＳ８０２で決定した入出力ファイル名に基づいて、ビルド処理パラメータ記述（図３の（Ｃ））の設定を参照して、処理プログラムに渡すパラメータを決定する。
【００７７】
次に、ＣＰＵ１２０１は、決定した入出力、及び処理方法に関するデータをメモリ１２０４に記録する（ステップＳ８０４）。この処理では、ＣＰＵ１２０１は、ステップＳ８０２，Ｓ８０３で決定したビルド処理の入力ファイル名、出力ファイル名、処理プログラム名、処理プログラムに渡すパラメータ、そのビルド処理対象が記述されていたファイル名を、一組のデータとしてメモリ１２０４に保持する。
【００７８】
すなわち、ＣＰＵ１２０１は、まず、図６のステップＳ６０２で読み込んで保持しておいたビルド処理記述の情報から、環境変数設定の情報を抽出して設定する。例えば、上記の例では、図５に示した作業ディレクトリにおけるファイル「ｃｏｎｆｉｇ／ｗｉｎ３２ｐｃ／ｐｒｏｇｒａｍ．ｃｏｎｆの’ｅｉｎｖｉｒｏｎｍｅｎｔｖａｒｉａｂｌｅ」の項目に記述されていた「ＰＡＴＨ」というパラメータを設定する。
【００７９】
さらに、ＣＰＵ１２０１は、図６のステップＳ６０１〜Ｓ６０３の処理で得られた図９に示すデータを、上から１行ずつ実行していく。この際、カレントワーキングディレクトリは、図９に示した「ビルド処理対象記述ファイル」の存在するディレクトリとなる。
【００８０】
そして、図９に示した「処理プログラム」は、図９の「処理プログラムに渡すパラメータ」に依拠して実行される。すなわち、図３（Ｃ）に示した２，３，５，７行目の「＄（ＩＮＰＵＴ）＝」、「＄（ＯＵＴＰＵＴ）＝」における「＊」は、図９に示した項目「入力ファイル」、「出力ファイル」のファイル名に置換される。この置換されたファイル名は、カレントワーキングディレクトリの相対ファイル名として機能する。
【００８１】
以上の入出力・処理決定は、図７においてステップＳ７０３に移行する毎に行われ、その都度、上記の一組のデータがメモリ１２０４に追加されていく。このようにして、指定されたターゲット用のビルド処理が実行される。
【００８２】
なお、本発明は、上記の実施の形態に限定されることなく、例えば、ターゲット用のビルド処理以外のソースコード処理についても適用することが可能である。
【００８３】
例えば、ビルド処理プログラムの一部として、ソースコードの危険個所を全モジュールに対して警告する静的解析ツールを指定したビルド処理記述を作成し、そのビルド処理記述を指定する内容を実施の形態と同様の手法で盛り込むことも可能である。
【００８４】
また、ソースコードに係るメトリクス（コード行数や複雑度など）を計測するために、ビルド処理プログラムの一部として、メトリクス計測プログラムを指定する内容を実施の形態と同様の手法で盛り込むことも可能である。
【００８５】
さらに、本発明の目的は、前述した実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【００８６】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８７】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００８８】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【００８９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施の形態に係るビルド処理方法を示す機能ブロック図である。
【図２】ターゲット記述例を示す図である。
【図３】ビルド処理記述例を示す図である。
【図４】ビルド対象物記述例を示す図である。
【図５】ビルド処理のための作業ディレクトリの構成例を示す図である。
【図６】ビルド処理の概要を示すフローチャートである。
【図７】図６のステップＳ６０３におけるビルド対象記述の読み込み処理の手順を示すフローチャートである。
【図８】図７のステップＳ７０３における入出力・処理決定の手順を示すフローチャートである。
【図９】図６〜図８の処理で得られて保存されたデータ例を示す図である。
【図１０】Ｍａｋｅｆｉｌｅの一般的な記述例を示す図である。
【図１１】ビルド処理のための従来のＭａｋｅｆｉｌｅの記述例を示す図である。
【図１２】本発明の実施の形態に係るコンピュータのハードウェア構成を示す図である。
【符号の説明】
【００９１】
１０１…ビルド指定情報
１０２…ターゲット記述部
１０３，１０４…モジュール結合記述部
１０６〜１０９…モジュール構成記述部
１１０…ビルド対象物記述部
１１４，１１８…ビルド処理記述部
１１１，１１５…ビルド処理プログラム記述部
１１２，１１６…ビルド処理適用ルール記述部
１１３，１１７…ビルド処理パラメータ記述部
１２０１…ＣＰＵ
１２０２…表示装置
１２０３…入力装置
１２０４…一次記憶装置
１２０５…二次記憶装置
【図１】
2008003841.tif 000003
【図２】
2008003841.tif 000004
【図３】
2008003841.tif 000005
【図４】
2008003841.tif 000006
【図５】
2008003841.tif 000007
【図６】
2008003841.tif 000008
【図７】
2008003841.tif 000009
【図８】
2008003841.tif 000010
【図９】
2008003841.tif 000011
【図１０】
2008003841.tif 000012
【図１１】
2008003841.tif 000013
【図１２】
2008003841.tif 000014