# Minimum 3.5 version is determined by cmake -E copy_if_different command # that was used to copy headers to the build directory: # multiple files are supported since cmake 3.5 cmake_minimum_required(VERSION 3.5) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) project(AT_UserTasks LANGUAGES CXX) # by default build optimized code if(NOT DEFINED CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE RELEASE) endif() if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) endif() # in DEBUG mode make verbose Makefile if (CMAKE_BUILD_TYPE MATCHES DEBUG) set(CMAKE_VERBOSE_MAKEFILE ON) endif () if(CMAKE_CXX_STANDARD LESS 17) find_package(Boost REQUIRED) endif() if(Boost_FOUND) message(STATUS "Boost version ${Boost_VERSION_STRING} is found!") message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}") endif() set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra") #set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra --coverage") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -ffast-math -DNODEBUG") message(STATUS "Using CXX flags for ${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}) list(APPEND CMAKE_PREFIX_PATH ${ROOTSYS}) find_package(ROOT REQUIRED) message(STATUS "Using ROOT: ${ROOT_VERSION} <${ROOT_CONFIG}>") include_directories(${ROOT_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} core) include(${ROOT_USE_FILE}) #---Locate AnalysisTree libraries find_library(AnalysisTreeBase NAMES AnalysisTreeBase PATHS $ENV{ANALYSISTREE_LIB}) find_library(AnalysisTreeInfra NAMES AnalysisTreeInfra PATHS $ENV{ANALYSISTREE_LIB}) if (AnalysisTreeBase) message(STATUS "AnalysisTreeBase is found: ${AnalysisTreeBase}") endif() if (NOT AnalysisTreeBase) message(FATAL_ERROR "Error: AnalysisTreeBase library wasn't found!") endif() if (AnalysisTreeInfra) message(STATUS "AnalysisTreeInfra is found: ${AnalysisTreeInfra}") endif() if (NOT AnalysisTreeInfra) message(FATAL_ERROR "Error: AnalysisTreeInfra library wasn't found!") endif() include_directories($ENV{ANALYSISTREE_INC}/AnalysisTree) set(SOURCES UserTaskWrite.cpp ) message(STATUS "CMAKE_PROJECT_NAME ${CMAKE_PROJECT_NAME}") string(REPLACE ".cpp" ".hpp" HEADERS "${SOURCES}") include_directories(${CMAKE_CURRENT_SOURCE_DIR} $<$:${Boost_INCLUDE_DIRS}>) add_library(AnalysisTreeUser SHARED ${SOURCES} G__AnalysisTreeUser.cxx) target_compile_definitions(AnalysisTreeUser PUBLIC $<$:ANALYSISTREE_BOOST_FOUND>) ROOT_GENERATE_DICTIONARY(G__AnalysisTreeUser ${HEADERS} LINKDEF AnalysisTreeUserLinkDef.h OPTIONS -I${CMAKE_BINARY_DIR}/include $<$:-DANALYSISTREE_BOOST_FOUND> ) target_link_libraries(AnalysisTreeUser PUBLIC ${ROOT_LIBRARIES} ${AnalysisTreeBase} ${AnalysisTreeInfra} $<$:${Boost_LIBRARIES}> ) include(${ROOT_USE_FILE}) include_directories(${ROOT_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS} ${AnalysisTree_INCLUDE_DIR}) # add_executable(example example.cpp) # target_link_libraries(example AnalysisTreeBase AnalysisTreeInfra AnalysisTreeUser ${ROOT_LIBRARIES} EG) # add_executable(run_read_task run_read_task.cpp) # target_link_libraries(run_read_task AnalysisTreeBase AnalysisTreeInfra AnalysisTreeUser ${ROOT_LIBRARIES} EG) add_executable(run_write_task run_write_task.cpp) target_link_libraries(run_write_task ${AnalysisTreeBase} ${AnalysisTreeInfra} AnalysisTreeUser ${ROOT_LIBRARIES} EG) #cmake_minimum_required(VERSION 3.5) #project(AnalysisTreeTask CXX) #set(PROJECT_VERSION 1.0) # #if(NOT DEFINED CMAKE_BUILD_TYPE) # set(CMAKE_BUILD_TYPE RELEASE) #endif() # #if(NOT DEFINED CMAKE_CXX_STANDARD) # set(CMAKE_CXX_STANDARD 17) #endif() # ## in DEBUG mode make verbose Makefile #if (CMAKE_BUILD_TYPE MATCHES DEBUG) # set(CMAKE_VERBOSE_MAKEFILE ON) #endif () # #if(CMAKE_CXX_STANDARD LESS 17) # find_package(Boost) #endif() # #if(Boost_FOUND) # message(STATUS "Boost version ${Boost_VERSION_STRING} is found!") # message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}") # add_definitions(-DUSEBOOST) #endif() # #find_package(ROOT REQUIRED) #list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}) #find_package(AnalysisTree REQUIRED) # #message(STATUS "${ROOT_INCLUDE_DIRS} ${AnalysisTree_INCLUDE_DIR}") #message(STATUS "${ROOT_LIBRARIES} ${AnalysisTree_INCLUDE_DIR}")