TFEL libraries in
C++The TFEL project generates several C++
libraries that can be used directly: TFELMFront,
TFELMTest, TFELSystem, TFELMaterial,
TFELMathCubicSpline, TFELMathKriging,
TFELMathParser, TFELMath, TFELTests,
TFELCheck, TFELException,
TFELGlossary, TFELUtilities,
TFELNUMODIS, TFELConfig, and
TFELUnicodeSupport.
Using those libraries requires in practice to add several pre-processor, compiler or linker flags, including paths to headers and libraries, and handling dependencies between those libraries.
The TFEL project provides two tools to ease developers’
life:
tfel-config utility,cmake
packages.tfel-configThe tfel-config utility provides much information useful
for compiling projects based on the TFEL libraries. This
utility is used internally by MFront (see this page for
details).
Most paths are influenced by the TFELHOME environment
variable. If this variable is not defined, then the installation path,
defined by the CMAKE_INSTALL_PREFIX variable, is used.
The following flags allow to get the paths toward the
TFEL headers.
--include-path: returns the path to the
TFEL headers.--includes: returns pre-processor directives to include
the TFEL headers.The following flags allow to request information for the linker:
--library-path: returns the path to the
TFEL libraries.--libs: returns linker directives to link with the
selected libraries (see below). This option also returns the linker
directives for the dependencies of the selected libraries.The following flags allow to request various pre-processor, compiler or linker flags:
--compiler-flags : returns TFEL’s recommended compiler
flags.--cppflags : returns flags related to the
C++ standard used.--cxx-standard : prints the version of the
C++ standard used to compile TFEL.--debug-flags : returns flags adding debugging
symbols.--ldflags : returns linking flags.--oflags : returns tfel recommended optimisation flags
with architecture specific flags.--oflags0 : returns tfel recommended optimisation flags
without architecture specific flags.--oflags2 : returns some aggressive optimisation flags,
possibly at the expense of numerical precision. This shall be added to
--oflags results.Note that those flags are consistent with the compiler used to
compile the TFEL project.
The following flags allow to select specific libraries:
--material : requests flags for the
TFELMaterial library.--math : requests flags for the TFELMath
library.--math-cubic-spline: requests flags for the
TFELMathCubicSpline library.--math-kriging : requests flags for the
TFELMathKriging library.--math-parser : requests flags for the
TFELMathParser library.--numodis : requests flags for the
TFELNUMODIS library.--exceptions : requests flags for the
TFELException library.--glossary : requests flags for the
TFELGlossary library.--mfront-profiling : requests flags for the
libMFrontProfiling library.The following examples showcase typical usages of
tfel-config:
$ tfel-config --includes
-I<TFEL_INSTALL_PATH>/include
$ tfel-config --include-path
<TFEL_INSTALL_PATH>/include
$ tfel-config --libs --math-parser
-L<TFEL_INSTALL_PATH>/lib -lTFELMathParser -lTFELMathKriging -lTFELMath -lTFELUnicodeSupport -lTFELExceptionIn those example, <TFEL_INSTALL_PATH> is to be
replaced by the actual installation path of the TFEL
project.
cmakeThe following cmake packages are available:
TFELMFront, TFELMTest,
TFELMaterial, TFELMath,
TFELMathCubicSpline, TFELMathKriging,
TFELMathParser, TFELSystem,
TFELNUMODIS, TFELCheck,
TFELUtilities, TFELGlossary,
TFELTests, TFELUnicodeSupport,
TFELException, TFELConfig
Those packages can be loaded using the find_package
command. It is highly recommended to pass the TFEL_DIR to
cmake to indicate where the TFEL library has
been installed.
Note that those packages import targets in the tfel::
namespace.
The following CMakeLists.txt file declares a simple
executable relying on the TFELMathCubicSpline library:
project(Test)
cmake_minimum_required(VERSION 3.13)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_REQUIRED ON)
find_package(TFELMathCubicSpline REQUIRED HINTS "${TFEL_DIR}/share/tfel/cmake")
add_executable(test main.cxx)
target_link_libraries(test tfel::TFELMathCubicSpline)The tfel-modules-common.cmake file defines the following
variables:
TFEL_CXX_STANDARD:TFEL_COMPILER_FLAGS:TFEL_COMPILER_CXXFLAGS:TFEL_COMPILER_WARNINGS:TFEL_OPTIMISATION_FLAGS0:TFEL_OPTIMISATION_FLAGS:TFEL_OPTIMISATION_FLAGS2:TFEL_CMAKE_C_FLAGS:TFEL_CMAKE_C_FLAGS_DEBUG:TFEL_CMAKE_C_FLAGS_RELEASE:TFEL_CMAKE_C_FLAGS_COVERAGE:TFEL_CMAKE_C_FLAGS_PROFILING:TFEL_CMAKE_CXX_FLAGS:TFEL_CMAKE_CXX_FLAGS_DEBUG:TFEL_CMAKE_CXX_FLAGS_RELEASE:TFEL_CMAKE_CXX_FLAGS_COVERAGE:TFEL_CMAKE_CXX_FLAGS_PROFILING:TFEL_CMAKE_EXE_LINKER_FLAGS_COVERAGE:TFEL_CMAKE_MODULE_LINKER_FLAGS_COVERAGE:TFEL_CMAKE_SHARED_LINKER_FLAGS_COVERAGE:The tfel-modules-common.cmake can be included as
follows:
include("${TFEL_DIR}/share/tfel/cmake/tfel-modules-common.cmake")