--- project: Fortran-lang/fpm summary: Fortran Package Manager project_github: https://github.com/fortran-lang/fpm project_download: https://github.com/fortran-lang/fpm/archive/master.zip author: fortran-lang/fpm contributors author_pic: https://fortran-lang.org/assets/img/fortran_logo_512x512.png author_email: fortran-lang@groups.io github: https://github.com/fortran-lang twitter: https://twitter.com/fortranlang website: https://fortran-lang.org src_dir: ./fpm/src output_dir: ./fpm-doc page_dir: ./doc media_dir: ./doc/media exclude_dir: ./bootstrap ./archive ./test display: public protected source: true proc_internals: true sort: permission-alpha favicon: doc/media/favicon.ico print_creation_date: true extra_mods: iso_fortran_env:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fFORTRAN_005fENV.html tomlf:https://toml-f.github.io/toml-f M_CLI2:https://github.com/urbanjost/M_CLI2 creation_date: %Y-%m-%d %H:%M %z md_extensions: markdown.extensions.toc markdown.extensions.smarty --- [TOC] # Fortran package manager developer documentation This is the main documentation of the Fortran package manager (*fpm*). This document serves as developer documentation of *fpm* itself and contains general advice for developing in the *fpm* code base. ## The package manifest The central object describing an *fpm* project is the package manifest ``fpm.toml``. The manifest is written in TOML, you can find the TOML specification at the official [TOML homepage](https://toml.io). The ``fpm.toml`` file targets project developers and maintainers to relieve them from writing build files for their packages. With the package manifest a central place to collect information about the project is provided. It contains the versioning and licensing meta data, as well as the information on external dependencies and the required build-tools or compiler settings. The manifest format specific to *fpm* projects is documented in the [manifest reference](page/Manifest.html). @Note For a more practical but less complete guide on creating *fpm* projects see the [packaging guide](page/Packaging.html). The details of the TOML parsing are implemented with using the [tomlf](https://toml-f.github.io/toml-f) module. Generally, the interface to all TOML related functions for *fpm* is found in the proxy module [[fpm_toml]]. All the manifest types are bundled in [[fpm_manifest]]. While the specific subtables for the package configuration are found in the ``src/fpm/manifest`` directory, they should be reexported in the [[fpm_manifest]] module if they should be elsewhere in *fpm*. ## Command line interface *fpm* is mainly used as a command line tool. To work with an *fpm* project as a user you can completely rely on the command line. The command line interface is build with the [M_CLI2](https://github.com/urbanjost/M_CLI2) module and can be found in [[fpm_command_line]]. ## Generating this documentation This documentation is generated by [FORD](https://github.com/Fortran-FOSS-Programmers/FORD). For more details on the [project file](https://github.com/fortran-lang/fpm/docs.md) and the comment markup in the source code visit the [FORD documentation](https://github.com/Fortran-FOSS-Programmers/ford/wiki). To regenerate this documentation run: ```shell ford docs.md ```