我正在尝试配置一个Fortran 2008项目来使用CMake;该项目中的文件扩展名为“.f08”。然而,即使是“hello world”示例,我也无法让CMake正常工作。以下是我的CMakeLists.txt文件的相关部分:
cmake_minimum_required(VERSION 2.8)
project (hello)
enable_language (Fortran)
set (CMAKE_Fortran_SOURCE_FILE_EXTENSIONS ${CMAKE_Fortran_SOURCE_FILE_EXTENSIONS} "f08;F08")
add_executable ("hello-world" "hello-world.f08")
set_target_properties (hello-world PROPERTIES LINKER_LANGUAGE Fortran)
三点要注意:
- 生成的Makefile没有将"hello-world.f08"编译成目标文件。
- "set_target_properties"是必需的。否则,CMake会报告它无法确定目标"hello-world"的链接器语言。
- 将文件重命名为"hello-world.f95"并在CMakeLists.txt中对应更改可以使事情顺利进行。甚至不再需要"set_target_properties"命令。
ifort
会报错,显示ld:testf08.f08: file format not recognized; treating as linker script
,甚至在尝试编译之前就失败了。请使用.f90作为扩展名,并使用FFLAGS将-std=f2008
(gfortran)添加进去,这样才能真正使用F2008标准,而不是依赖于扩展名来实现。 - casey