【VSCode】Windows 下搭建 Fortran 环境

文章目录

  • Part.I 预备知识
  • Part.II 安装与配置
    • Chap.I 编译环境
    • Chap.II 插件
  • Part.III 测试
    • Chap.I 一个示例
    • Chap.II 注意事项

Part.I 预备知识

在这里插入图片描述

Fortran 是一种比较古老的语言了,当时作为一种科学计算工具,还是比较火的,因为很多有名的软件都是基于 Fortran 开发的。现阶段虽然使用的比较少,但是如果想用比较流行或者更高性能的语言来『COPY』之前用 Fortran 实现的功能,那么就需要简单搭建一个环境了,这正是笔者有此需求的原因。

Fortran 的语法笔者在上本科的时候学习过,还记了一些编程笔记;另外用 VSCode 搭建 Fortran 环境和用 VSCode 搭建 C++ 环境十分相似,笔者也写过类似的总结。因为笔者并不是从头开始搭建此环境的,因此有些细节可能总结的不够全面,可从参考以前的笔记。

  • Fortran 编程笔记
  • VScode 安装与简单使用
  • VSCode Windows 下搭建 C++ 环境

Part.II 安装与配置

Chap.I 编译环境

首先要安装 Fortran 的编译环境 gfortran,笔者安装的是MSYS2中的gcc-fortran(因为在配C++环境的时候已经装了MSYS2),没有装的小伙伴可以按照下面的步骤安装:

1、下载msys2

在这里插入图片描述
2、安装,将其放到一个合适的路径,比如笔者放在了A:\Programs\msys64
3、运行MSYS2 MYSYS,一次输入如下指令

pacman -Syu
pacman -Su
pacman -S --needed base-devel mingw-w64-x86_64-toolchain

前两个指令一路Y回车,后面的一条指令会让你选要装啥,我装了下图中的5(ps:图是之间做的)。

在这里插入图片描述

4、设置环境变量:

  • 右键『我的电脑』→属性→高级系统设置→环境变量→系统变量→新建MinGW,并将其值赋成A:\Programs\msys64\mingw64(你装在哪里就赋成啥)
  • 设置Path:在系统变量Path中添加路径%MinGW%\bin,之后点确定
  • 检查是否安装好:在powershell中输入gfortran -v看看能否找到指令

Chap.II 插件

插件直接搜索安装就行,笔者安装了下面几个插件(这几个好像是必须的,建议都装上)

  • Modern Fortran (这个插件对 VScode 版本有要求,最好是用最新版的VSCode)
  • fortran
  • Fortran Breakpoint Support
  • C/C++

Part.III 测试

Chap.I 一个示例

新建个文件test.f90,内容如下:

PROGRAM add_numbers
implicit none
REAL :: a, b, av1, av2, c
PRINT *, 'Input 2 numbers:'
READ (*,*) a, b
    av1 = (a + b)/2; av2 = (a*b)**0.5
PRINT *, 'Arithmetic mean: ', av1
PRINT *, 'Geometric mean: ', av2
READ (*,*) c 
END

然后加调试文件launch.jsontasks.json.vscode文件夹下,没有的话新建一个)launch.json文件内容:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Lunch(GDB)",
            "type": "cppdbg",
            "request": "launch",
            "targetArchitecture": "x86",
            "program": "${workspaceRoot}\\${fileBasenameNoExtension}.exe",
            "miDebuggerPath": "gdb.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "externalConsole": true,
            "preLaunchTask": "gfortran"
        },
        {
            "name": "Intel Debug Attach",
            "type": "cppvsdbg",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ]
}

tasks.json文件内容:

{
    "version": "2.0.0",
    "command": "gfortran",
    "args": [
        "-g",
        "${file}",
        "-o",
        "${workspaceRoot}\\${fileBasenameNoExtension}.exe"
    ]
}

值得注意的是,Fortran文件类型有*.f,*.f90,*.f95等,最开始它好像不能自动用 Fortran 语法来组织这些后缀的文件,而是以纯文本的形式显示的,这时候就需要调一下下面的文件『语言模式』(右下红框)

在这里插入图片描述
左下红框,选择我们刚才配置的调试设置,然后F5运行:

在这里插入图片描述
搞定!!

Chap.II 注意事项

打断点打不了,设置(Ctrl+,)中搜索break,将『允许在任何文件中设置断点』勾选即可。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2699.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LFM雷达实现及USRP验证【章节2:LFM雷达测距】

目录 1. 参数设计 几个重要的约束关系 仿真参数设计 2. matlab雷达测距代码 完整源码 代码分析 回顾:LFM的基本原理请详见第一章 本章节将介绍LFM雷达测距的原理及实现 1. 参数设计 几个重要的约束关系 带通采样定理: 因此如果我们B80MHz时&a…

SQL优化13连问,收藏好!

1.日常工作中,你是怎么优化SQL的? 大家可以从这几个维度回答这个问题: 分析慢查询日志 使用explain查看执行计划 索引优化 深分页优化 避免全表扫描 避免返回不必要的数据(如select具体字段而不是select*) 使用…

【Android -- 开发工具】Xshell 6 安装和使用教程

一、简介 Xshell 其实就是一个远程终端工具,它可以将你的个人电脑和你在远端的机器连接起来,通过向 Xshell 输入命令然后他通过网络将命令传送给远端Linux机器然后远端的Linux机器将其运行结果通过网络传回个人电脑。 二、Xshell 6 的安装 首先&#…

如何通过命令行查看CentOS版本信息和linux系统信息

1.如何查看已安装的CentOS版本信息: 1.cat /proc/version 2.uname -a 3.uname -r 4.cat /etc/centos-release 5.lsb_release -a 6.hostnamectl1. 第一种方式输出的结果是: Linux version 3.10.0-1127.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …

算法基础-回溯算法

回溯算法大致分为以下几类: 组合:组合、组合总和、电话号码的字母组合 分割:分割回文串、复原IP地址 子集:子集 排列:全排列 棋盘问题:N皇后、解数独 其他:递增子序列、重新安排行程 一、什么是…

gns3:动态路由(ospf) area0 骨干网络(域间)(ABR)+ ospf 连接 rip (外部)(ASBR)+ 区域划分

1.配置好接口ip 全部处于up状态2.配置好lookback口 增加一个虚拟直连网段全部为 255.255.255.0的子网掩码实现上边ospf之间通信r1的全局模式router ospf 1network 192.168.1.0 0.0.0.255 area 1network 1.1.1.0 0.0.0.255 area 1宣告直连 并且划分area 区域为1r2全局模式router…

一种LCD屏闪问题的调试

背景 项目使用ESP32-S3 RGB接口驱动的LCD, 框架 idf-v5.0, LVGL-v7.11 显示画面正常, 但肉眼可见的像是背光在闪烁, 背光电路是应用很久的经典电路, 且排查背光驱动无错, 但开机一段时间后, 闪烁会明显减轻 记录 这块屏的显示驱动芯片为ST7701S, 查看芯片手册有说明特定的上…

全网最完整,接口测试总结彻底打通接口自动化大门,看这篇就够了......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 所谓接口&#xff0…

音视频开发—MediaCodec 解码H264/H265码流视频

使用MediaCodec目的 MediaCodec是Android底层多媒体框架的一部分,通常与MediaExtractor、MediaMuxer、AudioTrack结合使用,可以编码H264、H265、AAC、3gp等常见的音视频格式 MediaCodec工作原理是处理输入数据以产生输出数据 MediaCodec工作流程 Med…

SpringBoot整合Flink(施耐德PLC物联网信息采集)

SpringBoot整合Flink(施耐德PLC物联网信息采集)Linux环境安装kafka前情:施耐德PLC设备(TM200C16R)设置好信息采集程序,连接局域网,SpringBoot订阅MQTT主题,消息转至kafka&#xff0c…

计算机网络体系结构——“计算机网络”

各位CSDN的uu们你们好呀,今天小雅兰来学习一个全新的知识点,就是计算机网络啦,下面,开始虚心学习。 计算机网络的概念 计算机网络的功能 计算机网络的组成 计算机网络的分类 标准化工作 计算机网络的性能 计算机网络的概念 …

Hadoop集群环境配置搭建

一、简单介绍 Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎 Lucene,这个搜索引擎在2001年成为Apache基金会的一个子项目,也是 ElasticSearch等重要搜索引擎的底层基础。 项目官方:https://hadoop.apache.org/ 二、Linux环…

SpringBoot 结合RabbitMQ与Redis实现商品的并发下单【SpringBoot系列12】

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。 程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发 1 项目准备 SpringBoot 整合 RabbitMQ 消息队…

【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化

文章目录HTMLCSSCSS加载会造成阻塞吗JavaScript渲染优化参考本系列目录:【前端八股文】目录总结 是以《代码随想录》八股文为主的笔记。详情参考在文末。 代码随想录的博客_CSDN博客-leecode题解,ACM题目讲解,代码随想录领域博主 性能优化,从以下几个方…

【C++】STL容器、算法的简单认识

几种模板首先认识一下函数模板、类模板、栈模板。函数模板函数模板就是一个模型&#xff0c;而模板函数是函数模板经过类型实例化的函数。如下template<class T>是一个简单的函数模板&#xff1a;template<class T> T Max(T a, T b) {return a > b ? a : b; } …

Joomla未授权访问漏洞CVE-2023-23752

1、前言Joomla是一套全球知名的内容管理系统&#xff08;CMS&#xff09;&#xff0c;其使用PHP语言加上MySQL数据库所开发&#xff0c;可以在Linux、Windows、MacOSX等各种不同的平台上运行。2月16日&#xff0c;Joomla官方发布安全公告&#xff0c;修复了Joomla! CMS中的一个…

cjson文件格式介绍

cjson是一种轻量级的JSON解析库&#xff0c;它支持将JSON格式的数据转换为C语言中的数据结构&#xff0c;同时也支持将C语言中的数据结构转换为JSON格式的数据。cjson的文件格式是指在使用cjson库时&#xff0c;将JSON格式的数据存储在文件中&#xff0c;然后通过cjson库读取文…

C++ 学习笔记(十)(继承、抽象篇)

前言&#xff1a;主要是自己学习过程的积累笔记&#xff0c;所以跳跃性比较强&#xff0c;建议先自学后拿来作为复习用。 文章目录1 定义父类和子类1.1 定义父类访问说明符 protected1.2 定义子类1.3 子类向父类的转换1.4 转换的例外1.5 子类的构造函数1.6 静态成员不能继承1.7…

clip精读

开头部分 1. 要点一 从文章题目来看-目的是&#xff1a;使用文本监督得到一个可以迁移的 视觉系统 2.要点二 之前是 fix-ed 的class 有诸多局限性&#xff0c;所以现在用大量不是精细标注的数据来学将更好&#xff0c;利用的语言多样性。——这个方法在 nlp其实广泛的存在&…

2023年ACM竞赛班 2023.3.20题解

目录 瞎编乱造第一题 瞎编乱造第二题 瞎编乱造第三题 瞎编乱造第四题 瞎编乱造第五题 不是很想编了但还是得编的第六题 不是很想编了但还是得编的第七题 还差三道题就编完了的第八题 还差两道题就编完了的第九题 太好啦终于编完了 为啥一周六天早八阿 瞎编乱造第一题…
最新文章