You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ninja构建因多规则生成mod文件失败,应优先排查何处?

Ninja构建报错:多个规则生成Fortran模块文件的排查方案

报错信息

[5145/6609] 生成Fortran dyndep文件CMakeFiles\mystran.dir\Fortran.dd
ninja: 构建停止:多个规则生成Binaries/mod/allocated_memory_use_ifs.mod。

关联的Fortran.dd内容

..
build CMakeFiles\\mystran.dir\\Source\\USE_IFs\\ALLOCATED_MEMORY_USE_IFs.f90.obj | Binaries\mod\allocated_memory_use_ifs.mod: dyndep | Binaries\mod\outa_here_interface.mod Binaries\mod\write_alloc_mem_table_interface.mod
  restat = 1

build CMakeFiles\\mystran.dir\\Source\\UTIL\\ALLOCATED_MEMORY.f90.obj: dyndep | Binaries\mod\allocated_array_data.mod Binaries\mod\allocated_memory_use_ifs.mod Binaries\mod\constants_1.mod Binaries\mod\debug_parameters.mod Binaries\mod\iount1.mod Binaries\mod\params.mod Binaries\mod\pentium_ii_kind.mod Binaries\mod\scontr.mod

优先排查点

  • 检查源文件的模块重复定义:
    核对Source/USE_IFs/ALLOCATED_MEMORY_USE_IFs.f90和Source/UTIL/ALLOCATED_MEMORY.f90,确认是否两个文件都定义了allocated_memory_use_ifs模块。正常情况下应该只有前者定义该模块,后者仅通过use语句引用。

  • 排查CMake配置的编译规则冲突:
    检查项目的CMakeLists.txt,看是否存在重复添加源文件、错误设置模块输出目录,或者让ALLOCATED_MEMORY.f90生成同名模块的配置。比如是否重复调用add_executable/add_library包含目标文件,或者Fortran_MODULE_DIRECTORY配置导致路径冲突。

  • 验证依赖生成逻辑:
    从dyndep文件内容看,ALLOCATED_MEMORY.f90.obj仅应依赖allocated_memory_use_ifs.mod,而非生成它。确认该文件代码中没有误写module allocated_memory_use_ifs的定义语句。

  • 清理缓存重建:
    删除CMakeFiles目录和Binaries/mod下的所有模块文件,重新运行cmake ..生成构建文件后再执行ninja,排除缓存依赖导致的错误。

内容的提问来源于stack exchange,提问作者realbabilu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:15:52