1

我正在尝试构建一个使用 Fruit 进行单元测试的 fortran 项目。本质上,我有一个 fortran 模块源文件,其中包含一些名为 test_something 的子例程,然后我想运行一个 Rakefile,它调用 Fruit 生成一个 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