【发布时间】:2020-03-05 09:00:00
【问题描述】:
我正在尝试使用包含单个外部 Fortran 库的 cmake 编译单个 Fortran 源文件 main.f90:
USE RAD_Module
使用以下简单的手写 makefile 可以很好地编译项目:
all:
gfortran -c -I/usr/local/rad_v2.0.0/include main.f90
gfortran -L/usr/local/rad_v2.0.0/lib -lRAD -o test.out main.o
外部静态库没有CMakeLists.txt,其结构如下:
- 其
*.mod模块文件位于/usr/local/rad_v2.0.0/include/。 - 其
librad.a文件位于/usr/local/rad_v2.0.0/lib/。
我的CMakeLists.txt 文件如下所示:
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
project("myProject" Fortran)
enable_language(Fortran)
## Target from sources:
add_executable(myProject main.f90)
## Link library:
link_directories("/usr/local/rad_v2.0.0/lib")
link_directories("/usr/local/rad_v2.0.0/include")
find_library(RAD
NAMES librad.a
HINTS "/usr/local/rad_v2.0.0/lib")
if(NOT RAD)
message(FATAL_ERROR "RAD library not found!")
endif()
target_link_libraries(myProject RAD)
有了这个CMakeLists.txt cmake 成功地生成了一个makefile。但是,当我随后尝试make 代码时,我收到以下错误消息:
15 | USE RAD_Module
| 1
Fatal Error: Cannot open module file 'rad_module.mod' for reading at (1): No such file or directory
compilation terminated.
文件rad_module.mod位于文件夹/usr/local/rad_v2.0.0/include中。
【问题讨论】:
-
include_directories(/usr/local/rad_v2.0.0/include)将启用.mod文件的查找。 Makefile 在“构建”处停止(因此需要包含/mod 文件),这应该可以解决。
标签: cmake fortran static-libraries