1

Ada/C++ プロジェクトを継承し、gprbuild を使用してビルド プロセスを自動化しようとしています (これは、以前は約 12 個の .bat ファイルのセットで行われていました)。私は Ada と gprbuild にまったく慣れていませんが、実際にはかなりの進歩を遂げています。必要な .exe はコンパイルできますが、ライブラリはコンパイルできません。.gpr ファイルを完全に共有する自由はありませんが、関連する部分は次のようになります。

[snip]
for Source_Dirs use (
                    "c_plus_plus_files",
                    "ada_files",
                    "..\another_project\some_other_ada_files",
                    "..\another_project\even_more_ada_files"
                    );
[snip]
for Source_Files use (
   "my_ada_file.ads",                       
   "another_ada_file.ads",                      
   "one_more_ada_file.adb", 
   "c_plus_plus_file.cpp"
    );
[snip]  

「gprbuild -P my_project.gpr」を実行すると、「gcc -c gnat5 one_more_ada_file.adb」が実行され、one_more_ada_file.adb が依存している特定のファイルが見つからないというエラーが表示されます。依存関係は ..\another_project\even_more_ada_files にあるので、見つかると思います。しかし、依存関係を one_more_ada_file.adb と同じフォルダーにコピーすると、エラーはなくなります。

VCS のセットアップ方法と 2 つのプロジェクト間でコードを共有する方法のために、すべての ada ファイルの複数のコピーを保持するよりも、「source_dirs の使用」の使用方法の何が問題なのかを理解したいと思います。

繰り返しますが、私は Ada/GPS 初心者なので、関連情報を省略している場合はお知らせください。

更新: 特定の問題は、source_dirs がまったく何もしていないことではなく、1 つのディレクトリの .ads ファイルが別のディレクトリの .ads ファイルに依存する 2 つのソース ディレクトリを持つことを処理しないようです。つまり、上記の「他の」プロジェクト内でも、even_more_ada_files の .ads ファイルに依存する some_other_ada_files の .ads ファイルは、gprbuild を実行したときに gcc -c -gnat05 コマンドでコンパイルされません (エラー: のファイルeven_more_ada_files が見つかりません)、ディレクトリごとに 1 つずつ、2 つの -I フラグを使用して手動で (または .bat スクリプトで) gcc コマンドを実行すると、コンパイルされます。

4

1 に答える 1

2

複数のプロジェクトを扱う場合は、通常、プロジェクトごとに.gprファイルを作成し、必要に応じてプロジェクトを他のプロジェクトに依存させる必要があります。

したがって:

project another_project is
   for Source_Dirs use
      ("some_other_ada_files",
       "even_more_ada_files");
end another_project;

その後:

with "..\another_project\another_project.gpr"

project The_Project is
   for Source_Dirs use 
      ("c_plus_plus_files",
       "ada_files");
end The_Project;
于 2012-10-25T18:38:50.040 に答える