1

単体テストに Fruit を使用する Fortran プロジェクトを構築しようとしています。基本的に、test_something という名前のサブルーチンを含む Fortran モジュール ソース ファイルがあり、Fruit を呼び出す Rakefile を実行して、すべてのテストを実行する Fortran プログラム ソース ファイルを生成したいと考えています。Fruit はこの目的で rake を使用するため、rake を使用しないという選択肢は私にはありません。

これらのファイルが生成されることを期待するように cmake に指示するために、これらのコマンドを含めました。

set_source_files_properties(fruit_driver_gen.f90 PROPERTIES GENERATED true)
set_source_files_properties(fruit_basket_gen.f90 PROPERTIES GENERATED true)

次に、rake を実行するためのカスタム コマンドがあります。

add_custom_command(    
   OUTPUT fruit_driver_gen.f90 fruit_basket_gen.f90
   COMMAND rake gen
   DEPENDS Rakefile)

Rakefile は、カスタム コマンドが実行されるフォルダーにコピーする必要がある単なるファイルですが、ターゲットとして登録されているかどうかに依存するため、次のようにカスタム ターゲットとして追加してみます。

add_custom_target(Rakefile SOURCES "${PROJECT_SOURCE_DIR}/Rakefile}")

cmake を実行すると、次のエラーが表示されます。

CMake Error at tests/CMakeLists.txt:20 (add_custom_target):
  Cannot find source file:

    ~/Fruit_example/tests/Rakefile}

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx

私は何か完全に間違っていますか?私が望むものを達成するためのよりエレガントな方法はありますか? 私は基本的に、cmake のコピーを作成し、スクリプトを実行して出力を生成しようとしています。Fortran と Fruit を使用することはおそらくそれほど一般的ではありませんが、それを実行しようとしているのは私だけではないと思います。

4

0 に答える 0