Difference between revisions of "Fortran support in Code::Blocks"

From Code::Blocks
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Category:User Documentation]]
 
[[Category:User Documentation]]
== Attaching the compiler framework ==
+
Presently Code::Blocks IDE has support not only for C/C++ but for Fortran also. Features of Code::Blocks useful for Fortran:
To attach the GNU Fortran 77 Compiler (G77) the following steps are required:
+
* Editor with syntax highlighting for fixed and free Fortran source code
* Make a copy of the GNU GCC compiler as follows:
+
* Support for GFortran and PGI Fortran compilers. Other Fortran compilers can be added by users too. “Support for compiler” means: (a) the graphical interface for the options of the compiler and (b) catching of compilation errors and warnings and jumping to the corresponding code line
 +
* During the compilation Code::Blocks cares about the dependencies between Fortran files in the project (it is important when Fortran modules are used)
 +
* Symbol browser with program units and variables defined in Fortran files
 +
* Code-completion
 +
* Call-tips
 +
* and some more.
  
1.) Goto menu "Settings" -> "Compiler"
+
Most of the functionality useful for Fortran is implemented through FortranProject plugin. More information about the use of Code::Blocks with Fortran can be found on [http://cbfortran.sourceforge.net/ cbfortran page].
 
 
2.) Select the "GNU GCC Compiler", click the "Copy Button"
 
 
 
3.) Save the copy e.g. under "GNU G77 Compiler"
 
 
 
* Setup the compiler as follows:
 
 
 
1.) The path etc. should be as of the GCC Compiler. If this has been setup correctly, no changes are required. Otherwise refer to the setup of the GNU GCC compiler.
 
 
 
2.) Change under the "Programs" tab: "C compiler" =  "g77.exe", "Linker for dynamic libs": "g77.exe"
 
 
 
3.) If you mix Fortran with C programs then add "-lg2c" in the "Linker" tab (and "-lstdc++" if you have mixed Fortran/C and C++ projects) under "Other linker options".
 
 
 
* Important: Make sure the path environment is setup to really point a path that contains the Fortran compiler suite. C::B with MinGW does '''NOT''' include the Fortran compiler. You may download the compiler under [http://www.mingw.org MinGW webpage]. "gcc-g77-3.4.2-20040916-1.tar.gz" is the name of the package I expect you want.
 
 
 
== Adding new Fortran file type ==
 
It makes sense to add a new "Fortran Sources" filetype to have the Fortran source code files being seperated. Steps to do so:
 
* Goto menu "Project" -> "Project tree" -> "Edit file types categories"
 
* Click on "Add" to add a new type of files
 
* Select "Fortran Sources" as group name
 
* Enter the following in the file-mask (without quotation marks): "*.f;*.f77;*.cmn;*.inc;"
 
* Click OK to close the dialog.
 
For your interest: "*.f;*.f77" are normally the default extensions for source code files, "*.cmn" is the extension for Fortran common-blocks and "*.inc" if often used as include file with e.g. variable declarations.
 
 
 
== Setting up Fortran projects ==
 
To work with Fortran files, do the following:
 
Add a (new) file to the project, saved as "your_fortran_file.f". Verify it's recognised as "Fortran Sources" file type. If not verify you have done the steps above correctly. To enable compiling the project which includes Fortran files follow these steps:
 
* Right click on the project, select "Build options" and make sure you have selected the "GNU G77 compiler" (see steps above).
 
* Right click on the "your_fortran_file.f" file and select "Properties".
 
 
 
1.) Enable "Compile file" and "Link file".
 
 
 
2.) Under the "Advanced" tab enter "CC" as compiler variable
 
 
 
* Compile the project, it should work by now.
 
 
 
== Troubleshooting ==
 
For troubleshooting enable the "Full command line" Under menu "Settings" -> "Compiler" -> "Other" tab, "Compiler logging". If you see that still the gcc compiler is invoked, make sure you setup the right compiler in the build options for your project '''AND''' your target (e.g. "default").
 
 
 
== Using gfortran instead of g77 ==
 
The preceding steps can also be used to set up Code::Blocks to use the GNU gfortran Fortran '95 compiler, albeit with the following changes:
 
 
 
* Setup the compiler as follows:
 
 
 
1.) The "Compiler's installation directory" should point to the location of the root directory of the gfortran installation, for example if gfortran.exe is located in C:\gfortran\bin the path should read "C:\gfortran" (minus quotes).
 
 
 
2.) Under the "Programs" tab, select "gfortran.exe" as both the C compiler and the linker for dynamic libs instead of "g77.exe"
 
 
 
3.) DO NOT add the linker commands as given previously; leave these fields blank.
 
 
 
* Adding new Fortran file type
 
Proceed as above, but add "*.f95" as a file type instead of "*.f77".
 
 
 
Follow the rest of the steps above and gfortran should work.
 
  
 
== See also ==
 
== See also ==
 
* [[Fortran Project plugin]] - Fortran code completion and symbol browser.
 
* [[Fortran Project plugin]] - Fortran code completion and symbol browser.

Latest revision as of 19:03, 10 May 2016

Presently Code::Blocks IDE has support not only for C/C++ but for Fortran also. Features of Code::Blocks useful for Fortran:

  • Editor with syntax highlighting for fixed and free Fortran source code
  • Support for GFortran and PGI Fortran compilers. Other Fortran compilers can be added by users too. “Support for compiler” means: (a) the graphical interface for the options of the compiler and (b) catching of compilation errors and warnings and jumping to the corresponding code line
  • During the compilation Code::Blocks cares about the dependencies between Fortran files in the project (it is important when Fortran modules are used)
  • Symbol browser with program units and variables defined in Fortran files
  • Code-completion
  • Call-tips
  • and some more.

Most of the functionality useful for Fortran is implemented through FortranProject plugin. More information about the use of Code::Blocks with Fortran can be found on cbfortran page.

See also