1

ライブラリ言語がランタイム初期化を必要とする混合言語ライブラリを実行するときのベスト プラクティスは何ですか?

C++ から使用する特定のライブラリを Fortran で作成したいという問題があります。可能であれば、プラットフォームの独立性コンパイラーの独立性を維持したいと思います。さて、私が遊んだ 2 つのコンパイラ、G95 と GFortran はどちらも、メイン アプリケーションが特定のコンパイラ固有の初期化ルーチンを呼び出して、ライブラリを使用する前にランタイムを適切に設定する必要があります。これらの関数は、コンパイラによって名前とシグネチャが異なります (G95 の場合、関数は void g95_runtime_start(int argc, char *argv[]) です)。

私は CMake を使用してプロジェクトを管理しており、ライブラリ サブプロジェクトは静的ライブラリです。メインアプリケーションのcmakeファイルで、ライブラリサブプロジェクトに使用されているfortranコンパイラを掘り下げてから、CMakeにメインプロジェクトで定義を作成させて、どちらかのinitルーチンでメインアプリを条件付きでコンパイルできるようにする必要がありますか? とてもぎこちなく感じます。より良い方法はありますか?

4

1 に答える 1

1

autoconfでは、名前マングリングと代替メイン (AC_FC_MAIN) がサポートされています。これについてはcmake グループでも議論があったことを知っているので、FortranCinterface モジュールで利用できる可能性があります。しかし、私はそれに関するドキュメントを見つけることができませんでした。これらのタイプの問題はすでに解決され、十分に文書化されているため、cmake よりも autotools を使用することを好みます。

于 2010-08-05T22:57:27.827 に答える