Difference between revisions of "CMake FAQ"
m (→What versions of GEOS-Chem support CMake?) |
m |
||
Line 19: | Line 19: | ||
''todo'' | ''todo'' | ||
− | == | + | == Usage == |
=== How do I build GEOS-Chem with CMake? === | === How do I build GEOS-Chem with CMake? === | ||
Line 72: | Line 72: | ||
cmake . -DCMAKE_BUILD_TYPE=Debug | cmake . -DCMAKE_BUILD_TYPE=Debug | ||
− | == Advanced | + | == Advanced == |
=== Can I use Ninja rather than GNU Make? === | === Can I use Ninja rather than GNU Make? === |
Revision as of 18:01, 8 October 2019
Contents
General
What is CMake?
CMake is a program that generates Makefiles. This is an oversimplification, but it describes the essence of CMake.
What versions of GEOS-Chem support CMake?
GEOS-Chem Classic 12.6.0 and later support CMake.
GCHP is expected to support CMake by the end of 2019.
What are the benefits of CMake?
todo
What is incremental compiling?
todo
What is an "out of source" build?
todo
Usage
How do I build GEOS-Chem with CMake?
cd <run directory> # 1. Go to your run directory mkdir build # 2. Create a build directory cd build # 3. cd into your build directory cmake <path to GEOS-Chem's source code> # 4. Configure GEOS-Chem's build make -j # 5. Compile GEOS-Chem make install # 6. Install the geos executable in your run directory
Refer to Building GEOS-Chem with CMake for a detailed overview of building GEOS-Chem with CMake.
Can I build GEOS-Chem Classic and GCHP in the same environment?
Yes. Because GEOS-Chem Classic's requirements are a subset of GCHP's.
How do I build specific targets?
Pass the target's name as an argument to make
. You can build multiple specific targets by passing multiple names.
make <name>
How do I make clean
?
You don't need to do this anymore. When you run a make
command, the build system automatically figures out what needs to be recompiled. A "clean
" target still exists, but it cleans everything.
If you want to restart the build from scratch, you can do
make clean
How do I continue a build that was terminated before it finished?
Run your make
command again. The build system will automatically pick up where it left off.
How do I recompile after I make modifications to the source code?
The build system will automatically figure out what needs to be recompiled when you run make
. There is no need to run "cleaning" commands.
How do I clean my build's configuration (i.e. CMake's files)?
rm -rf build mkdir build cd build
How do I change GEOS-Chem's build options?
Build options set through CMake variables. You can set CMake variables with -D<name>="<value>"
arguments. Note that "ON", "OFF", "TRUE", "FALSE", etc., are valid booleans in CMake.
cmake . -DFOO="BAR" # set's the variable FOO equal to "BAR"
How do I disable multithreading (i.e. OpenMP)?
cmake . -DOMP=OFF
How do I disable colorized output?
cmake . -DCMAKE_COLOR_MAKEFILE=FALSE
How do I increase the build's verbosity?
cmake . -DCMAKE_VERBOSE_MAKEFILE=TRUE
How do I build for debugging?
cmake . -DCMAKE_BUILD_TYPE=Debug
Advanced
Can I use Ninja rather than GNU Make?
Yes. You'll need CMake version 3.7 or greater and Kitware's Ninja distribution (for Fortran futures). To use the Ninja generator rather than the Makefile generator, initialize your build directory with cmake -GNinja <path to source code>
.
Are the environment variables like FC
and ESMF_ROOT
necessary?
No, these are just for convenience. You can configure the build with the standard CMAKE_C_COMPILER
, CMAKE_CXX_COMPILER
, CMAKE_Fortran_COMPILER
, and CMAKE_PREFIX_PATH
variables, rather than environment variables, if you'd prefer. This means GEOS-Chem doesn't impose environment variable requirements on superprojects.