Pascal 日和 ホームページ

カウンター








ソースネクスト

GNAT(Ada) の設定



GNAT のインストールと設定




 事前に、「共通設定」ページを参照してください。




 GNATは、GNU Compiler Collection(GCC)の一つで、Adaコンパイラです。コンパイラというより統合開発環境と言って良いと思います。
 GNAT のWebサイトはこちらです ⇒ http://libre.adacore.com/

 GNAT は、GNU General Public License のもとに使用できます。
 MinGWのインストール時に、コンポーネントの選択(Select Components)時に「Ada Compiler」にチェックを入れるとGNATががインストールされますが、上記LIBREサイトから取得することをおすすめします。GPS(GNAT Programing Studio)というIDEも付属します。LIBREサイトのGNATもWindows版はMinGWベースのものです。

 GNATは、Ada83, 95, 2005, 2012 を実装しています。

 より高度な環境と有償の専門的なサポートが提供されるGNAT Proというのもあります。
 GNAT Pro のWebサイトはこちらです ⇒ http://www.adacore.com/gnatpro/ (参考までに)


 ここでは、Windows 32bit開発環境(LIBRE版GNAT)をインストールします。(今のところWindows版は32bitのみ提供されています)



GNAT の入手


 上記のLIBRE WebサイトのURLを開きます。

 以下のWebサイトが開いたら、[GNAT GPL] の部分をクリックします。




 [Free Software or Academic Development]を選択し、[Build Your Download Package]をクリックします。
 [Build Your Download Package]は[Free Software or Academic Development]を選択すると出てきます。




 [Select your platform]が、「x86-windows」/「2013」となっていることを確認し、「gnat-gpl-2013-i686-pc-mingw32-bin.exe」のファイルリンクをクリックします。
 [Download Selected Files]のクリックは不要です。
 1つ以上のファイルのチェックボックスをチェックして[Download Selected Files]をクリックすると、指定したファイルを1つのアーカイブファイルにしてダウンロードできます。
 今回は、GNATだけダウンロードするので、直接ファイルリンクをクリックしてダウンロードします。ダウンロードしたファイルはインストール後に削除してかまわないので、任意のディレクトリにダウンロードしてください。





GNAT のインストール


 「gnat-gpl-2013-i686-pc-mingw32-bin.exe」を実行するとインストールが始まります。
 [Next>]ボタンをクリックします。




 GNAT のインストールディレクトリを指定します。特に問題なければ表示のままとし、[Next>]ボタンをクリックします。




 Windowsのスタートメニューの項目名を指定します。特に問題なければ表示のままとし、[Next>]ボタンをクリックします。




 インストールの準備ができたので、 [Install]ボタンをクリックします。




 インストールが開始します。完了するまで待ちます。途中、ポップアップウインドウが表示されますが、終了画面まで待ちます。




 システムプロパティのPATH環境変数なGNATのパスを設定すると、MinGWと競合するので、[Add install location to the searcg path]のチェックははずします。
 ただし、MinGWやGNU Pascalをインストールしない方は、チェックを付けたままでも問題ありません。
 [Finish]ボタンを押して閉じます。




 これで、GNAT のインストールは完了です。ダウンロードした gnat-gpl-2013-i686-pc-mingw32-bin.exe は削除してもかまいません。



GNAT のPATHの設定


 インストーラでPATHの設定を行わなかったので、PATHの設定が必要です。
 以下のコマンドスクリプトをメモ帳(Notepad.exe)やエディタで作成し、C:\CMD ディレクトリに 「gnatada.cmd」というファイルで保存します。

@ECHO OFF
CALL resetpath.cmd
PATH C:\GNAT\2013\bin;%PATH%
SET LIBRARY_TYPE=static
SET ADA_INCLUDE_PATH=.;.\src;C:\GNAT\2013\lib\gcc\i686-pc-mingw32\4.7.4\adainclude
SET ADA_OBJECTS_PATH=.;.\obj;C:\GNAT\2013\lib\gcc\i686-pc-mingw32\4.7.4\adalib
SET ADA_LIBRARY_PATH=.;.\lib;C:\GNAT\2013\lib\gnat_util;C:\GNAT\2013\lib\xmlada
SET ADA_PROJECT_PATH=.;C:\GNAT\2013\lib\gnat

 ※ resetpath.cmd は「共通設定」ページで作成したコマンドスクリプトファイルです。

 コマンドプロンプトを起動し、gnatada を実行した後に、gnat を実行すると gnat のコマンド一覧が表示されます。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\PG>gnatada

C:\PG>gnat
GNAT GPL 2013 (20130314)
Copyright 1996-2013, Free Software Foundation, Inc.

List of available commands

gnat bind               gnatbind
gnat chop               gnatchop
gnat clean              gnatclean
gnat compile            gnatmake -f -u -c
gnat check              gnatcheck
gnat elim               gnatelim
gnat find               gnatfind
gnat krunch             gnatkr
gnat link               gnatlink
gnat list               gnatls
gnat make               gnatmake
gnat metric             gnatmetric
gnat name               gnatname
gnat preprocess         gnatprep
gnat pretty             gnatpp
gnat stack              gnatstack
gnat stub               gnatstub
gnat test               gnattest
gnat xref               gnatxref

All commands except chop, krunch and preprocess accept project file switches -vPx, -Pprj and -Xnam=val


C:\PG>



 GNAT はコマンドラインツールだけでビルドできますが、LIBRE版GNATをインストールすると GPS(GNAT Programing Studio)というIDEが使用できます。
 Windowsのスタートメニューから [GNAT]-[2013]-[GPS] で起動できます。
 gnatada を実行して PATHの設定をすれば、コマンドラインから gps を実行すると起動します。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\PG>gnatada

C:\PG>gps

C:\PG>



 GPS が起動します。



 メニューの [File]-[Exit] または、右上の[×]のクリックで IDE は終了します。



GPS の設定



 GPS は、デフォルトのフォントでは日本語が表示されないので、日本語が表示できるようにします。。
 設定は1回行うと以降継続されます。

 [Edit]-[Preferences]を選択します。



 左の一覧で[General]を選択します。
 [Defoule font]と[Fixed view font]に「MS Gothic 10」を設定します。(Select fontダイアログで設定)
 [Character set]のプルダウンで「Japanese (SHIFT-JIS)」を選択します。
 [Apply]ボタンをクリックして設定を適用します。

 


 左の一覧で[Editor]を展開し[Fonts & Colors]を選択します。
 [Defoule]に「MS Gothic 10」を設定します。(Select fontダイアログで設定)
 [OK]ボタンを押して、設定を適用し[Preference]ダイアログを閉じます。

 




GNAT(Ada) の Hello, world.




 GNATは、GPSでもコマンドラインでもビルドでができます。GPSもビルドはコマンドラインのツールを起動しています。
 GPSを使用するとプロジェクトファイルを作成してくれるので、管理が楽になります。プロジェクトファイルは、テキストファイルなので、記述方法がわかるとエディタで作成することもできます。また、プロジェクトファイルを用いてコマンドラインツールでビルドすることもできるので、人が介入しないバッチ処理も可能です。



GNAT(Ada) のHollo, world. (その1)


 「はじめに」ページで示したAda版 Hello, world. のメッセージを「世界よ、こんにちは。」に変えてコンパイル(ビルド)したいと思います。日本語を含んだプログラムソースのコンパイルができるかどうかは結構重要な問題です。
 ここでは、文字コードはShift-JIS(コードページ932)を使用してください。日本語Windowsの標準の文字コードはコードページ932です。

 C:\PG\GNUAda に Hello というサブディレクトリを作成しておきます。

 基本的には1つのプログラムは1つのサブディレクトリを用意して、その中で GPS がプロジェクトとして管理します。ソースファイルは複数のときもあります。
 このディレクトリをプロジェクトディレクトリとします。Helloディレクトリがそれにあたります。
 各プロジェクトディレクトリは以下のようなディレクトリ構成とします。(必須ではありませんが、これを前提に話を進めます)

 GNUAda
 ├ <プロジェクトディレクトリ>   … Helloなどプロジェクト名のディレクトリ(プロジェクトファイルを置く場所)
 │ ├ src                       … プログラムのソースファイルを置く場所(*.ads, *.adb)
 │ ├ obj                       … ビルドの中間ファイルを置く場所(*.o, *.ali)
 │ └ bin                       … ビルドの最終成果物を置く場所(*.exe)


 Ada についての説明は別途行いますので、ここでは正しくコンパイル(ビルド)できる環境ができたことを確認してください。


 Helloのプロジェクトディレクトリを作成し、GPSを起動します。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\PG>gnatada

C:\PG>CD GNUAda

C:\PG\GNUAda>MD Hello

C:\PG\GNUAda>CD Hello

C:\PG\GNUAda\Hello>MD src

C:\PG\GNUAda\Hello>MD obj

C:\PG\GNUAda\Hello>MD bin

C:\PG\GNUAda\Hello>gps

C:\PG\GNUAda\Hello>



 プロジェクトの作成前に、プログラムのソースファイル src\Hello.adb を用意します。
 ツールバーの[Create a New File]ボタンをクリックします。




 空白のエディタ画面が表示されたら、[Save As...]を選択します。




 空白のファイルを、src\Hello.adb として保存します。




 以下のソースコードをエディタに入力します。カーソル位置でのかな漢字には対応していないので、変換過程は別の場所に表示されますが、確定すると入力されます。慣れたテキストエディタで作成してコピー&ペースとしても良いでしょう。エディタを使用する場合、文字コードは Shift-JIS(コードページ932)で作成してください。
 以下のプログラムを入力してください。入力したら、[File]-[Save]を選択して保存します。ツールバーのフロッピーボタンのクリックでも保存できます。

-- AdaのHello, world. (日本語版)
 
with Ada.Text_Io; use Ada.Text_Io;
 
procedure Hello is
begin
   Put_Line("世界よ、こんにちは。");
end Hello;




 次に、 Hello プロジェクトを作成します。

 GPS はプロジェクトファイルを GPSのカレントディレクトリに作成するため、GPSのカレントディレクトリを Hello のプロジェクトディレクトリに設定します。
 [File]-[Change Directory...]を選択します。




 C:\PG\GNUAda\Hello を選択し、[OK]ボタンをクリックします。




 [Project]-[New...]を選択します。




 [Single Project]を選択し、[Forward]ボタンをクリックします。




 [Name & Localtion]で、「Hello」(プロジェクト名)と「C:\PG\GNUAda\Hello\」(プロジェクトフォルダ)を設定します。
 先には進まず、[Apply]ボタンをクリックします。(詳細設定は別途行います)




 プロジェクトの詳細設定を行います。
 [Project]-[Edit Project Properties]を選択します。




 左側の一覧で[Source dirs]を選択し、表示されているディレクトリ「C:\PG\GNUAda\Hello」を選択して、[Remove]ボタンをクリックします。




 [Add]ボタンをクリックします。




 「C:\PG\GNUAda\Hello\src」ディレクトリを選択して、[OK]ボタンをクリックします。




 「C:\PG\GNUAda\Hello\src」が追加されたことを確認します。




 左側の一覧で[Objects]を選択します。
 [Build Directory]に「C:\PG\GNUAda\Hello\obj」を設定します。
 [Exec Directory]に「C:\PG\GNUAda\Hello\bin」を設定します。




 左側の一覧で[Main files]を選択し、[Add]ボタンをクリックします。




 保存した、「Hello.adb」を選択します。




 「Hello.adb」が設定されたことを確認し、[OK]ボタンをクリックします。




 これで、ビルドの準備ができました。
 [Build]-[Project]-[Hello.adb]を選択するか、ツールバーの[Build Main: Hello.adb]ボタンをクリックするとビルドして、bin\Hello.exe ができます。




 [Build]-[Run]-[Hello]を選択するか、ツールバーの[Run Main: Hello]ボタンをクリックすると、GPSの中で実行と表示ができますが、日本語が文字化けしました。




 これは、GPSの問題で、Hello.exeの問題ではありません。
 確認するためにコマンドプロンプトで実行してみます。

C:\PG>CD GNUAda\Hello\bin

C:\PG\GNUAda\Hello\bin>Hello
世界よ、こんにちは。

C:\PG\GNUAda\Hello\bin>




GNAT(Ada) のHollo, world. (その2)


 Helloのプロジェクトディレクトリを作成し、GPSを起動します。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\PG>gnatada

C:\PG>CD GNUAda

C:\PG\GNUAda>MD Hello2

C:\PG\GNUAda>CD Hello2

C:\PG\GNUAda\Hello2>MD src

C:\PG\GNUAda\Hello2>MD obj

C:\PG\GNUAda\Hello2>MD bin

C:\PG\GNUAda\Hello2>gps

C:\PG\GNUAda\Hello2>



 プロジェクトの作成前に、プログラムのソースファイル src\Hello2.adb と、パッケージ Greetings の仕様ファイル src\Greetings.ads と、パッケージ Greetings の本体ファイル src\Greetings.adb を用意します。
 ツールバーの[Create a New File]ボタンをクリックします。




 空白のエディタ画面が表示されたら、[Save As...]を選択します。




 空白のファイルを、src\Hello2.adb として保存します。




 以下のソースコードをエディタに入力します。カーソル位置でのかな漢字には対応していないので、変換過程は別の場所に表示されますが、確定すると入力されます。慣れたテキストエディタで作成してコピー&ペースとしても良いでしょう。エディタを使用する場合、文字コードは Shift-JIS(コードページ932)で作成してください。
 同じ手順で、以下のプログラムを入力してください。入力したら、[File]-[Save]を選択して保存します。ツールバーのフロッピーボタンのクリックでも保存できます。
 各ソースファイルは、下に表示されているタブを選択すると表示を切り替えることができます。

■ src\Hello2.adb ■
-------------------------------------------------------------------------------
--  プログラム:Hello2                                                       --
-------------------------------------------------------------------------------

with Greetings;   --  パッケージGreetingsの可視化
use  Greetings;   --  パッケージGreetingsの可視部を直接可視にする

procedure Hello2 is

   MSG : constant String := "世界よ、こんにちは。";

begin

   Say_Hello (MSG);  --  パッケージGreetingsのSay_Helloの呼び出し

end Hello2;


■ src\Greetings.ads ■
-------------------------------------------------------------------------------
--  パッケージ仕様:Greetings                                                --
-------------------------------------------------------------------------------

package Greetings is

   procedure Say_Hello (Msg : in String);

end Greetings;


■ src\Greetings.adb ■
-------------------------------------------------------------------------------
--  パッケージ本体:Greetings                                                --
-------------------------------------------------------------------------------

with Ada.Text_IO; use Ada.Text_IO;

package body Greetings is

   procedure Say_Hello (Msg : in String) is
   begin
      Put_Line (Msg);
   end Say_Hello;

end Greetings;




 次に、 Hello2 プロジェクトを作成します。

 GPS はプロジェクトファイルを GPSのカレントディレクトリに作成するため、GPSのカレントディレクトリを Hello のプロジェクトディレクトリに設定します。
 [File]-[Change Directory...]を選択します。




 C:\PG\GNUAda\Hello2 を選択し、[OK]ボタンをクリックします。




 [Project]-[New...]を選択します。




 [Single Project]を選択し、[Forward]ボタンをクリックします。




 [Name & Localtion]で、「Hello2」(プロジェクト名)と「C:\PG\GNUAda\Hello2\」(プロジェクトフォルダ)を設定します。
 先には進まず、[Apply]ボタンをクリックします。(詳細設定は別途行います)




 プロジェクトの詳細設定を行います。
 [Project]-[Edit Project Properties]を選択します。




 左側の一覧で[Source dirs]を選択し、表示されているディレクトリ「C:\PG\GNUAda\Hello2」を選択して、[Remove]ボタンをクリックします。




 [Add]ボタンをクリックします。




 「C:\PG\GNUAda\Hello2\src」ディレクトリを選択して、[OK]ボタンをクリックします。




 「C:\PG\GNUAda\Hello2\src」が追加されたことを確認します。




 左側の一覧で[Objects]を選択します。
 [Build Directory]に「C:\PG\GNUAda\Hello2\obj」を設定します。
 [Exec Directory]に「C:\PG\GNUAda\Hello2\bin」を設定します。




 左側の一覧で[Main files]を選択し、[Add]ボタンをクリックします。




 保存した、「Hello2.adb」を選択します。




 「Hello2.adb」が設定されたことを確認し、[OK]ボタンをクリックします。




 これで、ビルドの準備ができました。
 [Build]-[Project]-[Hello2.adb]を選択するか、ツールバーの[Build Main: Hello2.adb]ボタンをクリックするとビルドして、bin\Hello2.exe ができます。




 [Build]-[Run]-[Hello2]を選択するか、ツールバーの[Run Main: Hello2]ボタンをクリックすると、GPSの中で実行と表示ができますが、日本語が文字化けしました。




 これは、GPSの問題で、Hello.exeの問題ではありません。
 確認するためにコマンドプロンプトで実行してみます。

C:\PG>CD GNUAda\Hello2\bin

C:\PG\GNUAda\Hello2\bin>Hello2
世界よ、こんにちは。

C:\PG\GNUAda\Hello2\bin>



コマンドラインでのビルド方法 (Hello2)


 プロジェクト Hello2 を例に、GPSを使用せず、コマンドラインでビルドする方法を説明ます。
 プロジェクトフォルダにはGPSで作成したプロジェクトファイル hello2.gpr が存在します。GPSでプロジェクトファイルの作成と設定が完了している場合、コマンドラインでもビルドすることができます。また、ビルドの生成物を消去することもできます。

 gnatmake.exe を以下の書式で起動すると、プロジェクトファイルを参照したビルドを行います。

書式:  gnatmake -P<プロジェクトファイル名>



 gnatclean を以下の書式で起動すると、ビルドの生成物を消去します。

書式:  gnatclean -P<プロジェクトファイル名>



 GPSでビルドした生成物を削除して、コマンドラインから再度ビルドして実行します。

 プロジェクトファイル無しでもコマンドラインからビルドすることができます。

 gnatmake.exe を以下の書式で起動すると、ソースファイルを参照したビルドを行います。プロジェクトファイルは不要です。

書式:  gnatmake [<オプション>]  <ソースファイル名>



 gnatclean を以下の書式で起動すると、ソースファイルを参照し、ビルドの生成物を消去します。

書式:  gnatclean [<オプション>]  <ソースファイル名>



 プロジェクトファイルからビルドした生成物を削除し、src\Hello.adb ファイルをビルドして実行します。

C:\PG>gnatada

C:\PG>CD GNUAda\Hello2

C:\PG\GNUAda\Hello2>gnatclean -Phello2.gpr
"C:\PG\GNUAda\Hello2\obj\greetings.ali" has been deleted
"C:\PG\GNUAda\Hello2\obj\greetings.o" has been deleted
"C:\PG\GNUAda\Hello2\obj\hello2.ali" has been deleted
"C:\PG\GNUAda\Hello2\obj\hello2.o" has been deleted
"C:\PG\GNUAda\Hello2\bin\hello2.exe" has been deleted

C:\PG\GNUAda\Hello2>gnatmake -D obj -o bin\Hello2.exe src\Hello2.adb
gcc -c -Isrc\ -I- -o C:\PG\GNUAda\Hello2\obj\hello2.o src\hello2.adb
gcc -c -Isrc\ -I- -o C:\PG\GNUAda\Hello2\obj\greetings.o src\greetings.adb
gnatbind -aOC:\PG\GNUAda\Hello2\obj -x C:\PG\GNUAda\Hello2\obj\hello2.ali
gnatlink C:\PG\GNUAda\Hello2\obj\hello2.ali -o bin\Hello2.exe

C:\PG\GNUAda\Hello2>bin\Hello2
世界よ、こんにちは。

C:\PG\GNUAda\Hello2>



 ソースファイルは src\Hello2.adb のみ指定します。Hello2.adb の中でパッケージ Greetings を参照しているので、gnatmake は自動的にビルドに含めてくれます。
 「-D」パラメタは、オブジェクトファイルなどの中間生成物を格納するディレクトリの指定です。「-o」は最終的な実行モジュールファイルを指定します。これでプロジェクトファイルの設定と同じく obj と bin ディレクトリが使用されます。

 src\Hello2.adb からビルドした生成物を削除します。

C:\PG>gnatada

C:\PG>CD GNUAda\Hello2

C:\PG\GNUAda\Hello2>gnatclean -D obj src\Hello2.adb
".\obj\hello2.ali" has been deleted
".\obj\hello2.o" has been deleted
".\obj\greetings.ali" has been deleted
".\obj\greetings.o" has been deleted

C:\PG\GNUAda\Hello2>



 ここまでできれば、GNAT(Ada) のビルド環境は完了です。
 うまくいかなかった場合は、「共通設定」ページと本ページを再度見直してください。