I’d like to know how to run the already-written code with fpm.
only demonstrates how to start a new project with fpm
The second question is related to this output
What does the tree represent in the upper link? It does not look like a command here!
I am using Windows OS.
Are you using MSYS2? If so, you can install the tree utility by running
pacman -S tree
For already existing projects you will need to define a fpm.toml with all the location of your source files. That might not necessarily play nice with your existing project structure.
You might want to have a look at one of my open source repos that takes an existing repo and repackages it for fpm
If you have your source files under
src it’s probably going to be a lot easier to build with fpm. The thing that you will probably miss is defining a set of compile flags, but we are in the process of getting that working in a future release.
Thank you for the link; I’ll look into it. However, it does not appear to be simple.
In many cases I start with “fpm new DIRNAME” or “fpm new . --backfill” in an existing directory. Without seeing your original file structure I am not positive that is better than manually creating the subdirectories, etc. I have found it simplest in most cases to start that way. I am curious why you did not use “fpm new” as it might point towards ways to improve that subcommand.
main.f90 is the program and the rest are all modules.
So how do I work with it?
If there are no other restrictions, change to the directory, backfill it, move the files into the expected locations and run, like this:
fpm new . --backfill
mv main.f90 app/
mv *mod.f90 src/
Those are the ULS (Unix-Like Systems) commands; but the only thing that would vary would be the move commands; which have to be OS-specific.
It is working fine now
but seems like fpm is a bit slower
$ fpm run <myprogram> --profile release
The meaning is the following:
--profile PROF selects the compilation profile for the build.
Currently available profiles are "release" for
high optimization and "debug" for full debug options.
If --flag is not specified the "debug" flags are the
(For fpm developers, should the
--flag in the last sentence of the description be
It’s correct but a little confusing. If --flag is specified no profile is applied unless specified. This allows you complete control of the compiler options. If --flag is not specified the default is --profile debug.
So if --flag is specified and no profile is specified only the options specified with --flag are applied.
If both are specified the options from the profile are combined with the options specified with --flag.
fpm run ### same as "fpm run --profile debug"
fpm run --flag '-Wall -O3' ## only the options specified are applied
fpm run --flag "-march=broadwell" --profile release # use options from release profile plus specified option.