需配置Sublime Text的Build System调用gfortran:先确认终端可运行gfortran,再新建.sublime-build文件,Linux/macOS用"cmd": ["gfortran", "-o", "${file_base_name}", "${file}"],Windows加.exe后缀,selector设为"source.fortran, source.f90",保存至Packages/User/目录,确保Fortran源码含program主程序块。

怎么让 Sublime Text 调用 gfortran 编译 Fortran 文件
Sublime Text 本身不带编译功能,得靠 Build System 把 gfortran 命令接进来。关键是路径要对、参数要准,否则点 Ctrl+B 后只看到“[Finished in 0.1s]”但没生成可执行文件,甚至没报错——那是根本没跑起来。
- 先确认终端里能直接运行
gfortran --version,Windows 用户尤其注意:如果用 MinGW-w64 或 MSYS2,别选错 shell(比如 PowerShell 里gfortran可能不可见,但 Bash 里可以) - 在 Sublime 中新建 Build System:
Tools → Build System → New Build System,贴入以下内容(Linux/macOS):
{
"cmd": ["gfortran", "-o", "${file_base_name}", "${file}"],
"selector": "source.fortran, source.f90",
"shell": true,
"working_dir": "${file_path}"
}
- Windows 用户把
"cmd"改成:["gfortran", "-o", "${file_base_name}.exe", "${file}"],不然生成的可执行文件没后缀,双击打不开 -
selector决定这个构建系统在什么语法高亮下自动激活;如果打开.f90文件后按Ctrl+B没反应,八成是 selector 没匹配上——手动在右下角点击语法名,选 “Fortran” 或 “Fortran 90”
为什么改了 Build System 还是提示 “Unable to find target”
这是 Sublime 找不到你保存的构建配置文件,不是代码或编译器的问题。它默认把 .sublime-build 文件存在用户目录下,路径不对就等于没装。
- 保存新 Build System 时,务必用
.sublime-build后缀,且文件名不能含空格或中文(比如叫Fortran_gfortran.sublime-build就行,别叫我的 Fortran 构建系统.sublime-build) - 正确保存路径是:
Sublime Text → Preferences → Browse Packages → User → xxx.sublime-build。如果误存到其他文件夹(比如桌面),Sublime 根本不会加载 - 改完后重启 Sublime 或执行
Tools → Build System → Refresh Projects,否则旧缓存可能还在用
运行时报错 “undefined reference to `main'” 怎么办
这不是 Sublime 或构建配置的问题,是 Fortran 程序本身没写入口。gfortran 默认找 program 主程序块,不是所有 subroutine 或 function 都能直接编译成可执行文件。
- 确保文件里有且仅有一个顶层
program xxx块,例如:
program hello
print *, 'Hello, Fortran!'
end program hello
- 如果只有
subroutine calc(),单独编译会报这个错;要么把它包进program,要么用-c参数只编译不链接(适合多文件项目) - 想调试单个子程序?别直接
Ctrl+B,先加-c到 cmd 数组里,再配合手动链接,或者改用gdb加载 .o 文件
怎么让 Sublime 自动保存后再编译(避免手抖忘存)
Sublime 没内置“保存+构建”快捷键,但可以用插件或简单改键绑定实现,关键是要避免重复保存或构建失败时覆盖源文件。
- 推荐用
Save on Build插件(Package Control 安装),启用后每次Ctrl+B会先触发保存——但它不区分是否修改过,所以小改动也会写磁盘 - 更轻量的做法:在
Preferences → Key Bindings里加一条:
{ "keys": ["ctrl+alt+b"], "command": "build", "args": {"save_first": true} }
- 注意
save_first: true只在当前视图有修改时才保存,不会无脑覆盖;但如果文件是只读的(比如放在系统目录),保存会失败,构建也就中断 - 别把快捷键设成
Ctrl+B本身——那会覆盖原构建行为,导致连纯构建都用不了
Fortran 的构建链路看着简单,实际卡点都在路径、命名和程序结构上。最常被忽略的是:Sublime 不管你有没有 program,它只负责调命令;而 gfortran 也不管你是不是想调试子程序,它只认链接规则。










