CMAKE_MINIMUM_REQUIRED(VERSION 3.15) project(CEPCSW) # setup some necessary envvar include(cmake/CEPCSWEnv.cmake) # include(GNUInstallDirs) include(CTest) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/InstallArea/ CACHE PATH "Install path prefix, prepended onto install directories." FORCE ) endif() set(CMAKE_SKIP_BUILD_RPATH TRUE) set(CMAKE_EXECUTABLE_SUFFIX .exe) # Put bin/lib/include under CMAKE_BINARY_DIR set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) include_directories(${CMAKE_BINARY_DIR}/include) # set Install/lib set(CMAKE_INSTALL_LIBDIR lib) # Set up C++ Standard # ``-DCMAKE_CXX_STANDARD=<standard>`` when invoking CMake set(CMAKE_CXX_STANDARD 17 CACHE STRING "") if(NOT CMAKE_CXX_STANDARD MATCHES "17|20") message(FATAL_ERROR "Unsupported C++ standard: ${CMAKE_CXX_STANDARD}") endif() # Build type # Use ``-DCMAKE_BUILD_TYPE=Debug`` when invoking CMake. # By default, it is RelWithDebInfo since Sept 6th, 2024. if (NOT CMAKE_CONFIGURATION_TYPES) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None|Release|MinSizeRel|Debug|RelWithDebInfo" FORCE) else() set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build, options are: None|Release|MinSizeRel|Debug|RelWithDebInfo" FORCE) endif() endif() list(PREPEND CMAKE_MODULE_PATH $ENV{PANDORAPFA}/cmakemodules) list(PREPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") # (Find*.cmake) include(cmake/CEPCSWOptions.cmake) include(cmake/CEPCSWDependencies.cmake) add_subdirectory(Analysis) add_subdirectory(Detector) add_subdirectory(Digitization) add_subdirectory(Examples) add_subdirectory(Generator) add_subdirectory(Reconstruction) add_subdirectory(Service) add_subdirectory(Simulation) add_subdirectory(Utilities) ############################################################################## # INSTALL ############################################################################## install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: FILE "${PROJECT_NAME}Targets.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/" ) gaudi_install(CMAKE cmake/${PROJECT_NAME}Config.cmake) file(WRITE ${CMAKE_BINARY_DIR}/setup.sh.in "#!/bin/bash\n" "# Generated by cmake \n" "# Following is the extra envvar:\n" "@RUN_SCRIPT_EXTRA_COMMANDS@" ) configure_file("${CMAKE_BINARY_DIR}/setup.sh.in" "${CMAKE_BINARY_DIR}/setup.sh" @ONLY) install(FILES "${CMAKE_BINARY_DIR}/setup.sh" DESTINATION ${CMAKE_INSTALL_PREFIX})