Cmake_fortran_compiler

CMAKEFortranCOMPILER: Fortran Compiler: CMAKEFortranFLAGS: Flags for the Fortran Compiler: ENABLENETCDF: For the gribtonetcdf convert tool: ON: ENABLEJPG: Enable JPEG2000 support. This option should look for Jasper or OpenJPG. If this option is enabled it is also possible to pick which one of OpenJpeg or Jasper to use. I am trying to compile LAPack using cmake. I am having Windows XP 32 bit OS with latest Cmake installed. I am getting error: No CMAKEFortranCOMPILER could be found Kindly help. next part - An HTML attachment was scrubbed.

  1. 64 Bit Fortran For Windows
  2. Cmake Fortran Compiler Flags
  3. Cmake Fortran Compiler Path
Skip to end of metadataGo to start of metadata

Overview

ecCodes uses CMake for compilation and installation. This is a first step towards an homogenisation of the installation procedures for all ECMWF packages.

Like autotools, CMake will run some tests on the user's system to find out if required third-party software libraries are available and note their locations (paths). Based on this information it will produce the Makefiles needed to compile and install ecCodes.

CMake is a cross-platform free software program for managing the build process of software using a compiler-independent method.

Generating the Makefiles with CMake

One nice and highly recommended feature of CMake is the ability to do out of source builds. In this way you can make all your '.o' files, various temporary depend files, and even the binary executables without cluttering up your source tree. To use out of source builds, first create a build directory, then change into your build directory and run cmake pointing it to the source directory and using your own options.

The command gives feedback on what requirements are fulfilled and what software is still required. The following table gives an overview of the different options. The default (without any options) will compile a shared library only and install it in /usr/local/.
Note: When an option is ON by default, it is enabled even if not explicitly requested. Features with default OFF need to be explicitly enabled by the user with -DENABLE_<FEATURE>=ON


CMAKE_INSTALL_PREFIXwhere you want to install your ecCodes/usr/local
CMAKE_BUILD_TYPE

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release
RelWithDebInfo
BUILD_SHARED_LIBSSelect the type of library built:
  • ON (Build shared libraries only)
  • OFF (Build static libraries only)
  • BOTH (Build both shared and static libraries)
ON
CMAKE_C_COMPILERC Compiler
CMAKE_C_FLAGSFlags for the C Compiler
CMAKE_Fortran_COMPILERFortran Compiler
CMAKE_Fortran_FLAGSFlags for the Fortran Compiler
ENABLE_NETCDFFor the grib_to_netcdf convert toolON
ENABLE_JPG

Enable JPEG2000 support. This option should look for Jasper or OpenJPG. If this option is enabled it is also possible to pick which one of OpenJpeg or Jasper to use

ON

ENABLE_PNGEnable PNG support for decoding/encodingOFF
ENABLE_AECEnable Adaptive Entropy Coding for decoding/encoding (CCSDS)OFF
ENABLE_PYTHON2Offers the Python interface to the package.
Note: This option is only for Python 2 (now deprecated)
For Python 3 use 'pip3 install'. See below
OFF
ENABLE_FORTRANOffers the Fortran interface to the packageON
ENABLE_ECCODES_THREADSEnable POSIX threadsOFF
ENABLE_ECCODES_OMP_THREADSEnable OpenMP threadsOFF
ENABLE_MEMFSSee Memory based access to definition/sample filesOFF
ENABLE_EXTRA_TESTSEnable extended regression testing (which requires data downloads)OFF


Note: The compilers can also be overridden by setting the environment variables CC and FC.

Note: To see the full output from the compilation, you can use:

Cmake_fortran_compiler

make VERBOSE=1

Quick installation guide

Here is an example of a list of commands you could use to install ecCodes. It is assumed “>” is the shell prompt.


It is recommended that you always build in a clean directory and also install into a clean directory.

Cmake_fortran_compiler

By default the ctest step above (running the tests) does NOT require any data to be downloaded and only runs basic sanity tests. However if you wish to exercise more of the functionality of ecCodes, you are advised to configure the build with:

In this mode the tests will take longer and you need to be connected to the internet (and set the relevant 'http_proxy' environment variable if you must use a proxy) so data files can be downloaded for the tests. You can however download all the data files in one go (See the data tarball link at the top of the Releases page)

Also note that if you have several CPUs, you can invoke the 'make' and 'ctest' commands above in parallel (e.g. 'make -j4', 'ctest -j4'). This will speed up the whole build/test process significantly.

Python 3 bindings

The Python 3 bindings are now built with CFFI and are packaged separately. So first install ecCodes as above with a shared library (either BUILD_SHARED_LIBS=ON or BOTH) and then install from PyPI:

or

If you are installing into a non-standard installation location (as in the 2nd case above), then set the environment variable ECCODES_DIR to tell the bindings where to find the root installation directory of the ecCodes engine.


See: https://pypi.org/project/eccodes/

Microsoft Windows

Please note: Windows is not a platform that is used for technical work at ECMWF. Therefore we will not be able to support this platform as well as we do for others, such as Linux. For operational use, we strongly advise you to use Linux.

If you find problems, we invite the Windows user community to use our new set-up on GitHub to fork/contribute and issue pull request changes. Old Reliable Tech has set up automatic tests and builds for Windows on GitHub, which should ensure continued releases for this new platform.

Legacy build system ('autotools')

From ecCodes version 2.0.0 the 'autotools' build system is deprecated and no longer supported.


64 Bit Fortran For Windows

GCC Gfortran and Intel oneAPI are the most advanced modern Fortran compilers.Useful Fortran 2018 enhancements include:select rankassumed array rank,error stopwithin pure procedures,random_initto initialize random number seed, andimplicit none (type, external)to require external procedures to be explicitly declared.GCC 8 is theoldest versioncurrently maintained.Intel oneAPI also has full Fortran 2018support.

To get recent GCC is usually straightforward.Red Hat should usedevtoolset.MacOS Homebrew quickly adds the latestGCC version.If Ubuntu gfortran repodefaultsaren’t adequate, get recent Gfortran viaPPA.

Here are some of the major changes in Gfortran by version:

  • Gfortran 10 added select rank
  • Gfortran 9 added random_init() to initialize the random generator seed…randomly
  • Gfortran 8.1 added automatic nested loop exchange with do concurrent, actual argument array with too few elements for dummy argument now errors, initial support for parameterized derived types (simply define kind at initialization) and coarray support for teams. Gfortran 8.2 and 8.3 did not introduce new Fortran features.
  • Gfortran 8.0 added -std=f2018 and deprecated -std=f2008ts.
  • Gfortran 7 added derived type IO select type et all–complete Fortran 2003, Fortran 2018 non-constant stop and error stop codes, and -fdec- options to help compile very old non-standard code.
  • Gfortran 6 added Fortran 2008 submodule support, useful for large projects to save compilation time and allow powerful use scenarios. Fortran 2003 deferred-length character are useful for avoiding bothersome trim() everywhere.
  • GCC 5 added full support for OpenMP 4.0, Fortran 2003 ieee_ intrinsics, Fortran 2008 error stop in pure procedures with constant error code.

GCC 4.9 added Fortran 2003 deferred-length character variables in derived types.GCC 4.8 supported Fortran 2008 polymorphism, including select type, class(*), type(*), and assumed rank dimension(.).GCC 4.6 was the first version of Gfortran reaching beyond Fortran 95, with Fortran 2003 deferred-length character variable and Fortran 2008 impure elemental support.GCC 4.5 added Fortran 2008 iso_fortran_env.GCC 4.4 added initial support for polymorphism and OpenMP 3.

Cmake Fortran Compiler Flags

Narrative essay outline. CMake allows switching parameters based on compiler version.This is very useful for modern Fortran programs.

Example CMakeLists.txt for Fortran compiler version dependent options.

Cmake Fortran Compiler Path

Reference: Gfortran changelog