打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
打造敏捷通用集成开发环境(一)The IDE of C 、C and Fortran

一、前言

     集成开发环境(简称IDE Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套装。所有具备这一特性的软件或者软件套装都可以叫做集成开发环境。

     Windows下的Visual Studio、Delphi,Linux下的Eclipse都属于IDE。

     可能大家有个疑问,既然各个系统都有这些非常成熟的产品,为什么还要再搭配一个呢。众所周知,VS非常庞大,你可能只需要编译基础的C和C++,但是VS把MFC、.net一大堆的框架全都安装进你的系统,虽然VS的调试器还是不错的,不过他的代码编辑器非常不完善,通常还需要安装一大堆插件来完成代码编写。Delphi的Rapid开发不错,但也仅限于Object Pascal语言和VCL框架。Eclipse基于Java环境,也能for win32,插件也非常丰富,就是启动速度比较慢,而且他建立的每个工程,都需要编写makefile,熟悉Linux的可能对此非常欣赏,但对于用惯了VS的,都会产生一个抵触感。另外,使用Vim/gvim和Emacs也不错,能完成编写代码的大部分工作,调试也可以通过插件完成,不过配置相当麻烦,如果你需要很多语言混合编程的话,这个配置文件就够你受的。因此,需要找到一个IDE,以求避免这些缺点。

    Code::Blocks就是一个满足条件的IDE。Code::Blocks本身是一个开放源码的全功能的跨平台C/C++集成开发环境,可以通过插件来扩充自身的功能。

    由于他本身就是以开发C/C++为目标的,官网上相关的文档也非常丰富,再次不再赘述搭建C/C++的基本内容。

    FORTRAN,是英文“FORmula TRANslator”的缩写,译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。Fortran语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。

    本来,Fortran是有个比较优秀的IDE的,即Compaq Visual Fortran,但是已经不再开发,也不支持最新的Fortran 2003之后的标准,对现在的CPU识别不佳,生成的代码效率比现在的流行的编译器要慢上不少。并且也缺少诸如代码提示、自动完成、变量导出等等对编写代码很有帮助的功能。此外,现在比较流行的Intel Visual Fortran也可以通过插件的形式嵌入Visual Studio 2008中,不过VS插件的代码提示、自动完成对Fortran语言无效,只能使Fortraner看着VS上的一大堆C/C++插件望眼欲穿。

    而Code::Blocks下有个专属于Fortran的插件FortranProject plugin,可以完成类似于VS下的Visual Assist插件的诸多功能,不过是针对Fortran语言的。

    下面就对Code::Blocks配置Fortran环境做个说明。

 

二、编译Code::Blocks

    如果要使用FortranProject plugin,需要Code::Blocks相同版本的sdk,为了方便起见,我们从头编译下Code::Blocks。

    编译Code::Blocks需要WxWidgetsgcc编译器,在此选择比较稳定的WxWidgets 2.8.11版和gcc 4.4.4(已经附带gfortran),下载后编译WxWidgets库(网上有关WxWidgets编译的内容很多,可以自行查阅)。

    另外,我们需要一个旧版本的Code::Blocks,和SVN上的最新源代码,命令为

svn checkout svn://svn.berlios.de/codeblocks/trunk 

   

    在Code::Blocks里新建wx和CB的全局变量,wx指向WxWidgets的位置,CB指向源代码目录下的src目录和include目录。

    打开src下的CodeBlocks.cbp的Code::Blocks工程,选Build All(之前可以调整优化参数),经过一段时间,Code::Blocks主体程序就会编译完成。

    再用Code::Blocks打开src目录下的ContribPlugins.workspace,选择Build Workspace编译CB的插件。

    执行完后,运行src\update.bat批处理,把WxWidgets生成的wxmsw28u_gcc_4.4.dll复制到src\output中,那么output里的最新SVN版的Code::Blocks就可以运行了。

 

三、编译FortranProject plugin

    去FortranProject plugin官网上下载最新的0.4版,这个版本比0.3版多出一个setting,这样就不用修改源代码来适应代码完成的延时了。

    使用上述编译完成的CB打开FortranProject plugin工程,选Build Project,编译完成后在其工程目录生成一个FortranProject.cbplugin插件文件,在CB里选择Plugins-Manage Plugins-install new,安装这个插件,这样FortranProject plugin就集成到CB里了。

    然后在CB里配置gfortran编译器和gdb调试器,这里省略。

   

四、FortranProject plugin的功能

    由于FortranProject plugin是在CB另一个插件Code Completion基础上修改的,两个插件有些冲突,编写Fortran程序时把Code Completion插件禁用。

1、代码高亮

2、变量名提示

3、关键字提示

4、函数形参提示

5、函数跳转

 

6、变量和函数声明提示

7、列出程序里的函数

8、设置窗口

9、其他功能参照FortranProject plugin作者的说明。

 

五、完善Fortran IDE

1、加入Fortran的Console工程    

     配置完上述内容,编写编译调试都没有问题了,不过得新建一个empty工程,新建文件来进行Fortran程序的编写,能不能把CB的Console工程加入Fortran的支持呢?

     进入CB文件夹的\share\CodeBlocks\templates\wizard\console中,新建一个目录f90,在f90目录下新建一个main.f90的文件,内容按你自己的喜好,这里的内容为

!main.f90program main    implicit none    write (*,*) "Hello world!"    stopend program

  

     更改wizard.script下面的语句

     把

Wizard.AddGenericSingleChoiceListPage(_T("ConsoleLanguagePage"),           _T("Please select the language you want to use."),           _T("C;C++"), ConsoleLang); // select language

     修改为

Wizard.AddGenericSingleChoiceListPage(_T("ConsoleLanguagePage"),           _T("Please select the language you want to use."),           _T("C;C++;f90"), ConsoleLang); // select language

    

     把

if (ConsoleLang == 0) // C source file        result = _T("console/c");    else // C++ source file        result = _T("console/cpp");

     修改为

if (ConsoleLang == 0) // C source file       result = _T("console/c");   else if (ConsoleLang ==1)// C++ source file       result = _T("console/cpp");   else       result = _T("console/f90");

   

    运行Code::Blocks,新建工程,选择Console application,

   

   

         

          选择f90,再选择编译器,就会出现刚才编写的以main.f90为基础的Console工程。

         

 

2、格式化Fortran代码

     Code::Blocks自带Astyle的格式化代码功能,不过不支持Fortran,Fortran源码千万不要用Astyle格式化,否则会全部乱套。Fortran的格式化插件现在还没有,但是Vim的插件可以完成此功能,CB又支持外挂程序,通过vim进行后台的格式化代码操作是一个很好的途径。

     这里仅使用Vim的格式化代码功能,所以对Vim进行一下精简(未对Vim主程序UPX压缩前,1M多一点儿)。

     Vim格式化代码仅需要以下文件

    

     indent目录里只保留一个fortran.vim。

     script内容为

gg=G:x

     这是为了使用Vim的gg=G进行格式化的脚本。

     配置文件_vimrc添加以下内容

"打开对文件类型插件的支持filetype plugin onfiletype plugin indent on"设置制表符宽度,默认为set tabstop=6set cindent shiftwidth=6set autoindent shiftwidth=6"Fortran 语法let fortran_more_precise=1let fortran_do_enddo=1let fortran_if_elseif_endif=1"设置无备份文件set writebackupset nobackup

    把精简后的Vim放到CB程序目录里的Vim文件夹下。

    回到CB界面,选择Tools-Configure Tools,添加一个Code Format,进行编辑。

    配置如下:

   

 

    看看把一个打乱的代码如何格式化美观吧。

            program main        implicit none           real :: Myaaabbb          Myaaabbb=1.         call test(aaa,bbb)                              if (aaa>1) then                             write(*,*) "aaa>1"                else                                        write(*,*) "error"                 endif      write(*,*) Myaaabbb,cccstop end program         subroutine test(aaa,bbb)            implicit none                    real :: aaa,bbb            bbb=aaa*2.                           end subroutine

    选择Tools-Code Format,CB会提示你文件更改,选择Yes,效果如下:

program main    implicit none    real :: Myaaabbb    Myaaabbb=1.    call test(aaa,bbb)    if (aaa>1) then        write(*,*) "aaa>1"    else        write(*,*) "error"    endif    write(*,*) Myaaabbb,ccc    stopend programsubroutine test(aaa,bbb)    implicit none    real :: aaa,bbb    bbb=aaa*2.end subroutine

 

六、后记

     Fortran的IDE至此就基本配置完毕,诸如编译器和调试器的配置请读者Google。如果想在新建工程里加入Fortran的其他工程,比如Lib、Dll等,可以参照上述修改Console的工程修改。

     此外,CB只支持gdb和cdb调试,而cdb不支持fortran符号,gdb对fortran的动态数组和module支持不佳,调试上有些苦恼。Intel的idb调试器对这个支持颇好,但是现在CB还不认idb的符号,所以debug时可以使用其他手段(输出看结果等)。idb嵌入VS的调试器也很好,我通过CB的外挂程序(连接VS里的idb)进行调试,一般的程序可以正常调试,如果存在module时老是发生错误,这个问题等解决后再在后文书写。

            Good luck!Welcome to the trip of Code::Blocks for fortran.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Code::Blocks IDE for Fortran windows上的完整使用心得
关于string的对象引用 ,C#技术文章,C#实例教程,C#
红色边框
linux下C/C IDE比较
把Vim打造成C语言的IDE
c#静态构造函数 与 构造函数 你是否还记得?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服