ライブラリ言語がランタイム初期化を必要とする混合言語ライブラリを実行するときのベスト プラクティスは何ですか?
C++ から使用する特定のライブラリを Fortran で作成したいという問題があります。可能であれば、プラットフォームの独立性とコンパイラーの独立性を維持したいと思います。さて、私が遊んだ 2 つのコンパイラ、G95 と GFortran はどちらも、メイン アプリケーションが特定のコンパイラ固有の初期化ルーチンを呼び出して、ライブラリを使用する前にランタイムを適切に設定する必要があります。これらの関数は、コンパイラによって名前とシグネチャが異なります (G95 の場合、関数は void g95_runtime_start(int argc, char *argv[]) です)。
私は CMake を使用してプロジェクトを管理しており、ライブラリ サブプロジェクトは静的ライブラリです。メインアプリケーションのcmakeファイルで、ライブラリサブプロジェクトに使用されているfortranコンパイラを掘り下げてから、CMakeにメインプロジェクトで定義を作成させて、どちらかのinitルーチンでメインアプリを条件付きでコンパイルできるようにする必要がありますか? とてもぎこちなく感じます。より良い方法はありますか?