Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个路径设置为CMAKE_Fortran_模块_目录_Cmake_Fortran_Gfortran - Fatal编程技术网

将多个路径设置为CMAKE_Fortran_模块_目录

将多个路径设置为CMAKE_Fortran_模块_目录,cmake,fortran,gfortran,Cmake,Fortran,Gfortran,因此,我试图将已安装的Fortran库包含到CMake项目中。我知道模块(.mod)文件所在的目录,但我的项目似乎无法找到它,除非我设置了CMAKE_Fortran_module_目录 SET(LIB_INCLUDE_DIR /usr/local/include) SET(EX_FILES main.f90 file1.f90 file2.f90) INCLUDE_DIRECTORIES(${LIB_INCLUDE_DIR}) ADD_EXECUTABLE(test ${EX_FILES}) T

因此,我试图将已安装的Fortran库包含到CMake项目中。我知道模块(.mod)文件所在的目录,但我的项目似乎无法找到它,除非我设置了CMAKE_Fortran_module_目录

SET(LIB_INCLUDE_DIR /usr/local/include)
SET(EX_FILES main.f90 file1.f90 file2.f90)
INCLUDE_DIRECTORIES(${LIB_INCLUDE_DIR})
ADD_EXECUTABLE(test ${EX_FILES})
TARGET_LINK_LIBRARIES(test lib1)
错误在哪里

use lib1
    1
Fatal Error: Can't open module file 'lib1.mod' for reading at (1): No such file or directory
除非我包括这条线

SET(CMAKE_Fortran_MODULE_DIRECTORY ${LIB_INCLUDE_DIR})
然后它就可以找到文件了。但我遇到了一个小问题。通过设置CMAKE_Fortran_MODULE_目录,CMAKE尝试将所有生成的模块写入该目录,而不是CMAKE_BINARY_目录(我喜欢的地方)

从文档中,我知道CMAKE_Fortan_MODULE_目录用于指定在何处写入生成的模块文件,但有些编译器会查看该目录以查找模块。有没有办法设置多个目录,以便在一个目录中找不到/写不到时,搜索第二个目录?当我尝试将CMAKE_Fortran_MODULE_目录设置为多个目录时,它只查看第一个目录

如果有帮助的话,我正在使用gfortran 4.8.4的Ubuntu 14.04 LTS系统上

编辑:

根据他的建议,我用VERBOSE=1运行,得到了

cd /home/user/Repos/build/src && gfortran   -I/home/user/Repos/build/src -isystem /usr/local/include    -c /home/user/Repos/test_project/src/main.f90 -o CMakeFiles/test.dir/main.f90.o
当我没有设置CMAKE_Fortran_MODULE_目录和

cd /home/user/Repos/build/src && gfortran   -J/usr/local/include -I/home/user/Repos/build/src -isystem /usr/local/include    -c /home/user/Repos/test_project/src/main.f90 -o CMakeFiles/test.dir/main.f90.o
当我这么做的时候


看起来唯一的区别是-J标志,它精确地设置了CMAKE_Fortran_MODULE_目录设置的内容。是否有一些标志只设置在何处查找已编译模块,而不设置在何处放置模块?

这很奇怪
INCLUDE_目录
是正确的语句(并且适用于我迄今为止使用过的各种cmake实例)。你能运行
VERBOSE=1 make
并发布与失败相关的命令吗?用结果编辑我的问题,谢谢你的建议这很奇怪
INCLUDE_目录
是正确的语句(并且适用于我迄今为止使用过的各种cmake实例)。你能运行
VERBOSE=1 make
并发布与失败相关的命令吗?用结果编辑了我的问题,谢谢你的建议