Essential and useful commands, from getting and building BOUT++, towriting a physics model. More complete documentation athttps://bout-dev.readthedocs.io/. Download a pdf of this page:cheat_sheet
CMake Cheat Sheet¶ cmake; Package; External Project; GNU Debugger Cheat Sheet. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. To refresh your session.
Generating Dependency Graphs with CMake, `cmake -graphviz=test.dot.` 7. Tool to generate cmakelists.txt from scratch or convert from existent build system ## what I do not like - cmake is not a precise or clear script lang - confusing string quotation and substitution - un-intuitive function style programming to c/python programmers - messed. An updated version of the cheat sheet for CMake 3.20 is now available. It contains an overview of commands, properties, variables, C features and modules, as well as small examples. Most things (commands, variables, properties, modules) are clickable and lead directly to the official documentation. Repo Cheatsheet. Repo is a tool developed by the Android Open Source Project. We use repo for source dependency management. This page describes how we typically structure our manifests and also explains some common repo commands that we use in our workflows.
git commands
Building BOUT++
Requirements
- C++11 compiler (gcc >= 4.9, Intel >= 14, Cray >= 8.4, Clang >= 3.3)
- MPI
- NetCDF >= 4.4.0
Optional dependencies:
- HDF5
- FFTW3
- OpenMP
- PETSc >= 3.4.0
- SLEPc >= 3.4.0
- SUNDIALS >= 2.7, or the separate components:
- ARKODE
- IDA
- CVODE
- LAPACK
Most of the integrated tests required PYTHONPATH
to be set totools/pylib
:
Configure
The basics:
Production: full optimisation, OpenMP, PETSc, and SUNDIALS
Dark souls 3 angel knightclevelandmultifiles. Other useful commands:
Developing BOUT++ library itself? If you touch a header file, need torebuild the whole library:
Need to change configuration options? Just rerun configure
. Worst case:
Need to modify configure
somehow? Change configure.ac
then run
CMake
The basics:
Production: full optimisation, OpenMP, PETSc, and SUNDIALS
Other useful CMake flags:
Developing BOUT++ library itself? Just rerun make
, CMake knowsexactly what to rebuild, including if you touch headers
Need to change configuration options? Delete the build directory andmake a fresh one:
Can keep multiple build directories for different configurations
Building a physics model
Makefile
In Makefile
:
then run:
CMake
In CMakeLists.txt
:
then run:
Writing a physics model
Include the necessary headers
Write a
class
publicly inheriting fromPhysicsModel
:Add members for the evolving fields, any runtime options, anyobjects that need to live between
rhs
calls:Implement the two required virtual functions,
init
andrhs
.init
should contain a call toSOLVE_FOR
for eachevolving variable. Similarly,rhs
should contain a call to theddt
for those variables.Add
BOUTMAIN
to create defaultmain
function:Add a
Makefile
orCMakeLists.txt
from above
|
In order to allow building plugins separately from Sofa and building an external application or library which depends on sofa, we provide cmakepackage configurations files. Those files are what cmake looks for when youcall find_package(Something), which is now how you find the dependencies foryour plugins.
Adt bundle windows x64 2014. The repository is divided in multiple packages: SofaFramework forframework/, SofaSimulation for sofa/simulation, five packages for modules(divided according to the SofaComponent* meta-libraries), and SofaGui forGUI-related libraries.
Also, there is a package for each plugin that is expected to be used asa library. (E.g. SofaPython, Compliant, Flexible..)
The following section lists the libraries is each package.
SofaFramework
- SofaHelper
- SofaDefaultType
- SofaCore
SofaSimulation
- SofaSimulationCommon
- SofaSimulationTree
- SofaSimulationGraph
SofaBase
- SofaBaseAnimationLoop
- SofaBaseCollision
- SofaBaseLinearSolver
- SofaBaseMechanics
- SofaBaseTopology
- SofaBaseVisual
- SofaComponentBase
SofaCommon
- SofaComponentCommon
- SofaDeformable
- SofaExplicitOdeSolver
- SofaImplicitOdeSolver
- SofaLoader
- SofaMeshCollision
- SofaObjectInteraction
- SofaRigid
- SofaSimpleFem
SofaGeneral
- SofaBoundaryCondition
- SofaComponentGeneral
- SofaConstraint
- SofaEngine
- SofaExporter
- SofaGraphComponent
- SofaHaptics
- SofaPreconditioner
- SofaSparseSolver
- SofaTopologyMapping
- SofaUserInteraction
- SofaValidation
- SofaDenseSolver
- SofaOpenglVisual
- SofaTaucsSolver
- SofaEigen2Solver
- SofaPardisoSolver
SofaAdvanced
- SofaComponentAdvanced
- SofaEulerianFluid
- SofaNonUniformFem
- SofaSphFluid
- SofaVolumetricData
SofaMisc
- SofaComponentMisc
- SofaMisc
- SofaMiscCollision
- SofaMiscEngine
- SofaMiscFem
- SofaMiscForceField
- SofaMiscMapping
- SofaMiscSolver
- SofaMiscTopology
SofaGui
- SofaGuiCommon
- SofaGuiGlut
- SofaGuiQt
- SofaGuiMain
Minimal CMakeLists.txt
Installation rules
Install the Foo library in <prefix>/lib, or <prefix>/bin on Windows. Untitledmr. macs class website.
Include directories
From the build directory
Use the current source directory as an include directory when linking against MyPlugin from the build tree:
From the installed location
Use <prefix>/include as an include directory when linking against the installed MyPlugin library
Installation rules
Declare public headers
The public headers of a target are the headers that should be installed with this target.
Install headers and binaries
Which is exactly what this macro does :
Create and install CMake package configuration files
This macro expects a MyPluginConfig.cmake.in template.
Minimal MyPluginConfig.cmake.in
Introduction
You have got a copy of a Sofa distribution (produced by a 'make install' in Sofa) and want to use it as a lib in your project, or run Sofa simulation directly.
In your project
How to build
Your application or library CMakeLists.txt should contain something similar to:
To tell cmake where to find sofa cmake files
How to run
To be able to run your application from its build tree, you need to tell Sofa where it is installed using the SOFA_ROOT environment variable.
Cmake Cheat Sheet Pdf
Sofa needs it to be access its resources such as plugin defined python packages.
Once your application is installed in the same prefix as sofa
You do not need SOFA_ROOT any more.
A sofa plugin in your project
How to build
This plugin has CMakeLists.txt similar to a plugin compiled along with sofa. If your plugin contains python files you normally have a call to sofa_set_python_directory() macro. The config file generated by this macro needs to be copy to the Sofa root :
Cmake Release With Debug Info
How to run
Cmake Release O2
Sofa looks for plugins in a list of PluginRepository, in your application main you need to setup this PluginRepository :