我正在尝试构建一个使用 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 可能并不常见。