CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. # Minimum 3.5 version is determined by cmake -E copy_if_different command
  2. # that was used to copy headers to the build directory:
  3. # multiple files are supported since cmake 3.5
  4. cmake_minimum_required(VERSION 3.5)
  5. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
  6. project(AT_UserTasks
  7. LANGUAGES CXX)
  8. # by default build optimized code
  9. if(NOT DEFINED CMAKE_BUILD_TYPE)
  10. set(CMAKE_BUILD_TYPE RELEASE)
  11. endif()
  12. if(NOT DEFINED CMAKE_CXX_STANDARD)
  13. set(CMAKE_CXX_STANDARD 17)
  14. endif()
  15. # in DEBUG mode make verbose Makefile
  16. if (CMAKE_BUILD_TYPE MATCHES DEBUG)
  17. set(CMAKE_VERBOSE_MAKEFILE ON)
  18. endif ()
  19. if(CMAKE_CXX_STANDARD LESS 17)
  20. find_package(Boost REQUIRED)
  21. endif()
  22. if(Boost_FOUND)
  23. message(STATUS "Boost version ${Boost_VERSION_STRING} is found!")
  24. message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}")
  25. endif()
  26. set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra")
  27. #set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra --coverage")
  28. set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -ffast-math -DNODEBUG")
  29. message(STATUS "Using CXX flags for ${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
  30. list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
  31. list(APPEND CMAKE_PREFIX_PATH ${ROOTSYS})
  32. find_package(ROOT REQUIRED)
  33. message(STATUS "Using ROOT: ${ROOT_VERSION} <${ROOT_CONFIG}>")
  34. include_directories(${ROOT_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} core)
  35. include(${ROOT_USE_FILE})
  36. #---Locate AnalysisTree libraries
  37. find_library(AnalysisTreeBase NAMES AnalysisTreeBase PATHS $ENV{ANALYSISTREE_LIB})
  38. find_library(AnalysisTreeInfra NAMES AnalysisTreeInfra PATHS $ENV{ANALYSISTREE_LIB})
  39. if (AnalysisTreeBase)
  40. message(STATUS "AnalysisTreeBase is found: ${AnalysisTreeBase}")
  41. endif()
  42. if (NOT AnalysisTreeBase)
  43. message(FATAL_ERROR "Error: AnalysisTreeBase library wasn't found!")
  44. endif()
  45. if (AnalysisTreeInfra)
  46. message(STATUS "AnalysisTreeInfra is found: ${AnalysisTreeInfra}")
  47. endif()
  48. if (NOT AnalysisTreeInfra)
  49. message(FATAL_ERROR "Error: AnalysisTreeInfra library wasn't found!")
  50. endif()
  51. include_directories($ENV{ANALYSISTREE_INC}/AnalysisTree)
  52. set(SOURCES
  53. UserTaskWrite.cpp
  54. )
  55. message(STATUS "CMAKE_PROJECT_NAME ${CMAKE_PROJECT_NAME}")
  56. string(REPLACE ".cpp" ".hpp" HEADERS "${SOURCES}")
  57. include_directories(${CMAKE_CURRENT_SOURCE_DIR} $<$<BOOL:${Boost_FOUND}>:${Boost_INCLUDE_DIRS}>)
  58. add_library(AnalysisTreeUser SHARED ${SOURCES} G__AnalysisTreeUser.cxx)
  59. target_compile_definitions(AnalysisTreeUser PUBLIC
  60. $<$<BOOL:${Boost_FOUND}>:ANALYSISTREE_BOOST_FOUND>)
  61. ROOT_GENERATE_DICTIONARY(G__AnalysisTreeUser ${HEADERS}
  62. LINKDEF AnalysisTreeUserLinkDef.h
  63. OPTIONS
  64. -I${CMAKE_BINARY_DIR}/include
  65. $<$<BOOL:${Boost_FOUND}>:-DANALYSISTREE_BOOST_FOUND>
  66. )
  67. target_link_libraries(AnalysisTreeUser
  68. PUBLIC
  69. ${ROOT_LIBRARIES}
  70. ${AnalysisTreeBase} ${AnalysisTreeInfra}
  71. $<$<BOOL:${Boost_FOUND}>:${Boost_LIBRARIES}>
  72. )
  73. include(${ROOT_USE_FILE})
  74. include_directories(${ROOT_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS} ${AnalysisTree_INCLUDE_DIR})
  75. # add_executable(example example.cpp)
  76. # target_link_libraries(example AnalysisTreeBase AnalysisTreeInfra AnalysisTreeUser ${ROOT_LIBRARIES} EG)
  77. # add_executable(run_read_task run_read_task.cpp)
  78. # target_link_libraries(run_read_task AnalysisTreeBase AnalysisTreeInfra AnalysisTreeUser ${ROOT_LIBRARIES} EG)
  79. add_executable(run_write_task run_write_task.cpp)
  80. target_link_libraries(run_write_task ${AnalysisTreeBase} ${AnalysisTreeInfra} AnalysisTreeUser ${ROOT_LIBRARIES} EG)
  81. #cmake_minimum_required(VERSION 3.5)
  82. #project(AnalysisTreeTask CXX)
  83. #set(PROJECT_VERSION 1.0)
  84. #
  85. #if(NOT DEFINED CMAKE_BUILD_TYPE)
  86. # set(CMAKE_BUILD_TYPE RELEASE)
  87. #endif()
  88. #
  89. #if(NOT DEFINED CMAKE_CXX_STANDARD)
  90. # set(CMAKE_CXX_STANDARD 17)
  91. #endif()
  92. #
  93. ## in DEBUG mode make verbose Makefile
  94. #if (CMAKE_BUILD_TYPE MATCHES DEBUG)
  95. # set(CMAKE_VERBOSE_MAKEFILE ON)
  96. #endif ()
  97. #
  98. #if(CMAKE_CXX_STANDARD LESS 17)
  99. # find_package(Boost)
  100. #endif()
  101. #
  102. #if(Boost_FOUND)
  103. # message(STATUS "Boost version ${Boost_VERSION_STRING} is found!")
  104. # message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}")
  105. # add_definitions(-DUSEBOOST)
  106. #endif()
  107. #
  108. #find_package(ROOT REQUIRED)
  109. #list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
  110. #find_package(AnalysisTree REQUIRED)
  111. #
  112. #message(STATUS "${ROOT_INCLUDE_DIRS} ${AnalysisTree_INCLUDE_DIR}")
  113. #message(STATUS "${ROOT_LIBRARIES} ${AnalysisTree_INCLUDE_DIR}")