Skip to content
Snippets Groups Projects
CMakeLists.txt 2.63 KiB
Newer Older
CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
# 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)

lintao@ihep.ac.cn's avatar
lintao@ihep.ac.cn committed
# Set up C++ Standard
# ``-DCMAKE_CXX_STANDARD=<standard>`` when invoking CMake
set(CMAKE_CXX_STANDARD 17 CACHE STRING "")

jmcarcell's avatar
jmcarcell committed
if(NOT CMAKE_CXX_STANDARD MATCHES "17|20")
lintao@ihep.ac.cn's avatar
lintao@ihep.ac.cn committed
  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)
      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(Detector)
lintao@ihep.ac.cn's avatar
lintao@ihep.ac.cn committed
add_subdirectory(Digitisers)
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})