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 コマンドを実行すると、コンパイルされます。