From: maier
- TODO
+ All parts of the library are organized into logical object libraries
+ with their respective sources lying under
+ ./source/CMakeLists.txt
./source/<foo>
, or
+ ./bundled/<foo>/<...>
. The actual setup of
+ an object library happens within that subdirectories with the help of
+ two macros:
+
+
+ #
+ # A list of source files forming the object target:
+ #
+ SET(src
+ ...
+ dof_tools.cc
+ )
+
+ #
+ # A list of instantiations that must be expanded:
+ #
+ SET(inst_in_files
+ ...
+ dof_tools.inst.in
+ )
+
+ #
+ # The following macro will set up an obj_dofs.debug and
+ # obj_dofs.release target with appropriate compile flags and
+ # definitions for a simultaneous build of debug and release library.
+ # Furthermore, the object name will be stored in
+ # ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/deal_ii_objects_(debug/release)
+ # so that it is available in global scope.
+ #
+ DEAL_II_ADD_LIBRARY(obj_dofs OBJECT ${src})
+
+ #
+ # This macro will set up an obj_dofs.inst target for expanding all
+ # files listed in ${inst_in_files}. Appropriate target dependencies
+ # will be added to obj_dofs.debug and obj_dofs.release.
+ #
+ EXPAND_INSTANTIATIONS(obj_dofs "${inst_in_files}")
+
+
+ Later, all object targets are collected in
+ ./source/CMakeLists.txt
to define the actual debug and
+ releases libraries. For further details, see
+ ./source/CMakelists.txt
and
+ ./cmake/macros/macro_deal_ii_add_library.cmake
.
./cmake/config/CMakeLists.txt
- TODO
+ The final bits of configuration happens in
+ ./cmake/config/CMakeLists.txt
where the templates for
+ the project configuration deal.IIConfig.cmake
and the
+ compatibility file Make.global_options
get expanded.
+ Furthermore, the configuration for the template expansion mechanism
+ resides under ./cmake/config/template_arguments.in
.