Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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

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,作为cmake的初学者,我正在尝试用cmake构建一个Fortran项目。源代码被封装到不同的模块中,这些模块位于不同的子文件夹中。但是,目标库和可执行文件似乎不会在编译之前等待.mod文件的生成 下面是我的CMakeLists.txt文件的一部分 谢谢大家 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/utilities/) include_directories(${CMAKE_CURRENT_BINARY_DIR}/utilities/)

作为cmake的初学者,我正在尝试用cmake构建一个Fortran项目。源代码被封装到不同的模块中,这些模块位于不同的子文件夹中。但是,目标库和可执行文件似乎不会在编译之前等待.mod文件的生成

下面是我的CMakeLists.txt文件的一部分

谢谢大家

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/utilities/)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/utilities/)

file(GLOB srcFiles
    ${CMAKE_CURRENT_SOURCE_DIR}/utilities/*.f90
    ${CMAKE_CURRENT_SOURCE_DIR}/utilities/*.h
    ${CMAKE_CURRENT_BINARY_DIR}/utilities/*.h
)
add_library(utilities STATIC ${srcFiles})
set_property(TARGET utilities PROPERTY LINKER_LANGUAGE Fortran)

file(GLOB srcFiles
    ${CMAKE_CURRENT_SOURCE_DIR}/ui/*.f90
)
add_library(ui STATIC ${srcFiles})
target_link_libraries(utilities)
set_property(TARGET ui PROPERTY LINKER_LANGUAGE Fortran)

file(GLOB srcFiles
    ${CMAKE_CURRENT_SOURCE_DIR}/driver/*.f90)
add_library(driver STATIC ${srcFiles})
target_link_libraries(utilities ui)
set_property(TARGET driver PROPERTY LINKER_LANGUAGE Fortran)

add_executable(rse ${srcFiles})
target_link_libraries(utilities driver)
set_property(TARGET rse PROPERTY LINKER_LANGUAGE Fortran)

install(TARGETS rse RUNTIME DESTINATION bin)

当我在驱动程序模块中使用utilities时,它会报告错误,
无法打开模块文件utilities.mod读取(1):没有这样的文件或目录。
当我在驱动程序模块中调用一个子例程时,它会报告对“\uu命令行\u mod read\u命令行”的
未定义引用,我建议坐飞机。请显示您的错误消息。为什么会出现这种情况?当我在驱动程序模块中使用实用程序时,它会报告错误
无法打开模块文件“utilities.mod”进行读取(1):没有这样的文件或目录
。当我调用驱动程序模块中的一个子例程时,它会报告
对“\uu命令行\u MOD\u read\u命令行”的未定义引用
target\u链接库
期望第一个参数是目标。你的用法并不能说明这一点。因此,第一次使用
target\u link\u库(ui公共工具)
,并对其他库进行调整。这解决了我的问题。非常感谢<代码>目标链接库
在构建树为纯层次结构时运行良好,但如果存在循环依赖项(例如使用子模块),则
添加依赖项
是定义
使用
层次结构的更好方法,与使用
目标链接库
定义链接器依赖项并行。