Skip to content
Snippets Groups Projects
CMakeLists.txt 2.66 KiB
cmake_minimum_required(VERSION 3.8)
project(EICD 
  VERSION 1.1.0
  LANGUAGES CXX)

#--- Declare options -----------------------------------------------------------
option(BUILD_DATA_MODEL "Run podio class generator yaml file" ON)

if(APPLE)
  set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
endif(APPLE)


find_package(podio 0.11.0 REQUIRED)
include_directories(${podio_INCLUDE_DIR})

#include(cmake/root.cmake)
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(ROOT REQUIRED COMPONENTS Core RIO Tree)
include(${ROOT_USE_FILE})

PODIO_GENERATE_DATAMODEL(eicd eic_data.yaml headers sources OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR})

add_library(eicd SHARED
  ${sources}
  )

target_link_libraries(eicd
  PUBLIC podio::podio
  PUBLIC ROOT::Core
  )
target_include_directories(eicd
  PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
  $<INSTALL_INTERFACE:include>)

target_compile_features(eicd
  PUBLIC cxx_auto_type
  PUBLIC cxx_trailing_return_types
  PRIVATE cxx_variadic_templates
  PRIVATE cxx_std_17)

PODIO_GENERATE_DICTIONARY(eicd ${headers} 
  SELECTION ${CMAKE_CURRENT_BINARY_DIR}/src/selection.xml
  OPTIONS --library ${CMAKE_SHARED_LIBRARY_PREFIX}eicd${CMAKE_SHARED_LIBRARY_SUFFIX}
  )
set_target_properties(eicd-dictgen PROPERTIES EXCLUDE_FROM_ALL TRUE)
target_sources(eicd PRIVATE eicd.cxx)

add_subdirectory(source)


install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/eicd
  DESTINATION include
  FILES_MATCHING PATTERN *.h
  )

install(TARGETS eicd
  EXPORT ${PROJECT_NAME}Targets
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
  RUNTIME DESTINATION bin
  INCLUDES DESTINATION include
  )

install(FILES
  "${PROJECT_BINARY_DIR}/eicdDict.rootmap"
  "${PROJECT_BINARY_DIR}/libeicd_rdict.pcm"
  DESTINATION lib)
add_custom_target( doc_doxygen #ALL 
  COMMAND doxygen ${CMAKE_SOURCE_DIR}/docs/Doxyfile
  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  COMMENT "Generating API documentation with Doxygen"
  VERBATIM )



# -------------------------
# install library config
include(CMakePackageConfigHelpers)

# Install and export targets
install(EXPORT ${PROJECT_NAME}Targets
  FILE ${PROJECT_NAME}Targets.cmake
  NAMESPACE EICD::
  DESTINATION lib/EICD
  )

set(TARGETS_INSTALL_PATH lib/EICD/EICDTargets.cmake)

configure_package_config_file(
  cmake/EICDConfig.cmake.in  
  ${CMAKE_CURRENT_BINARY_DIR}/EICDConfig.cmake
  INSTALL_DESTINATION lib/EICD
  PATH_VARS TARGETS_INSTALL_PATH
  )

write_basic_package_version_file("EICDConfigVersion.cmake"
  VERSION ${VERSION}
  COMPATIBILITY SameMajorVersion
  )

install(FILES
  ${CMAKE_CURRENT_BINARY_DIR}/EICDConfig.cmake
  ${CMAKE_CURRENT_BINARY_DIR}/EICDConfigVersion.cmake
  DESTINATION lib/EICD
  )