How do I structure a superbuild in CMake for C++?

When creating a superbuild in CMake for C++, you generally want to manage multiple libraries and projects collectively, often pulling external dependencies and managing their build processes. Here’s a simple structure to help you get started.

cmake_minimum_required(VERSION 3.10) project(SuperBuildExample) # Include ExternalProject module include(ExternalProject) # Specify external projects ExternalProject_Add( SomeExternalLib GIT_REPOSITORY https://github.com/user/SomeExternalLib.git GIT_TAG master CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/SomeExternalLib ) ExternalProject_Add( AnotherLib URL http://example.com/AnotherLib.tar.gz CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/AnotherLib ) # Option to build your application add_project(YourApplication) add_dependencies(YourApplication SomeExternalLib AnotherLib) # Add executable add_executable(YourApplication src/main.cpp) target_link_libraries(YourApplication SomeExternalLib AnotherLib)

CMake Superbuild C++ ExternalProject Libraries Build Process