我正在尝试构建一个使用Fruit进行单元测试的fortran项目。基本上,我有一个fortran模块源文件,其中包含一些名为test_something的子程序,然后我想运行一个调用Fruit的Rakefile来生成一个运行所有测试的fortran程序源文件。水果为此目的使用耙子,所以不使用耙子对我来说不是一个真正的选择。
我已经包含了这些命令,告诉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也许并不常见。