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.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Instead of including external modules as Git submodules, it would be better when these external modules would be build using the ExternalProject.cmake module. The top-level project will only contain the/a BasisProject.cmake with the meta-data of the external project such as its dependencies on external packages and other project modules as well as the module name. The accompanying CMakeLists.txt file will instead of basis_project_impl call a new macro such as:
basis_add_external_project(GIT_REPOSITORY <url>)
The arguments such as the download options are passed on to the ExternalProject_Add command. Other arguments for ExternalProject_Add are retrieved from the BasisProject.cmake file. Most importantly, this file defines the external and internal dependencies of the module which have to be looked for during the configuration of the top-level project and the location of the found dependencies must be passed on to the configure command used by ExternalProject_Add. The information of the BasisProject.cmake file should be sufficient for simple BASIS-based project modules. Modules which have additional options and build settings may need further arguments to be passed in the CMakeLists.txt file of the external module to the ExternalProject_Add command.
This approach can in the future also be used to add non-BASIS-based projects as modules of a BASIS-based top-level project. Eventually this could be extended to build third-party dependencies as external modules with other project modules depending on these external dependencies.
Issue by schuhschuh
Monday Jan 04, 2016 at 09:08 GMT
Originally opened as cmake-basis/legacy#528
Instead of including external modules as Git submodules, it would be better when these external modules would be build using the
ExternalProject.cmake
module. The top-level project will only contain the/aBasisProject.cmake
with the meta-data of the external project such as its dependencies on external packages and other project modules as well as the module name. The accompanyingCMakeLists.txt
file will instead ofbasis_project_impl
call a new macro such as:The arguments such as the download options are passed on to the
ExternalProject_Add
command. Other arguments forExternalProject_Add
are retrieved from theBasisProject.cmake
file. Most importantly, this file defines the external and internal dependencies of the module which have to be looked for during the configuration of the top-level project and the location of the found dependencies must be passed on to the configure command used byExternalProject_Add
. The information of theBasisProject.cmake
file should be sufficient for simple BASIS-based project modules. Modules which have additional options and build settings may need further arguments to be passed in theCMakeLists.txt
file of the external module to theExternalProject_Add
command.This approach can in the future also be used to add non-BASIS-based projects as modules of a BASIS-based top-level project. Eventually this could be extended to build third-party dependencies as external modules with other project modules depending on these external dependencies.
Related issue of #274.
The text was updated successfully, but these errors were encountered: