Skip to content
Snippets Groups Projects
CMakeLists.txt 3.87 KiB
Newer Older
Viktor's avatar
Viktor committed
cmake_minimum_required(VERSION 2.8)
Viktor's avatar
Viktor committed
project(Centrality)
Viktor's avatar
Viktor committed
set(CMAKE_MACOSX_RPATH 1)
Viktor's avatar
Viktor committed
set(CMAKE_cpp_STANDARD 11)
Viktor's avatar
Viktor committed
set(CMAKE_BUILD_TYPE debug)
Viktor's avatar
Viktor committed
set(PROJECT_VERSION 1.0)
Viktor's avatar
Viktor committed

Viktor's avatar
Viktor committed
set(SOURCES
        src/BordersFinder.cpp
        src/BordersFinderHelper.cpp
        src/Getter.cpp
Viktor's avatar
Viktor committed
        src/BordersFinder2D.cpp
Viktor's avatar
Viktor committed
        src/Container.cpp
Viktor's avatar
Viktor committed
        glauber/Fitter.cpp 
        glauber/FitterHelper.cpp 
Viktor's avatar
Viktor committed
        )

Viktor's avatar
Viktor committed
string(REPLACE ".cpp" ".h" HEADERS "${SOURCES}")
Viktor's avatar
Viktor committed

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

# Telling CMake where to find the ROOT installation.
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/lib")

#---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
Viktor's avatar
Viktor committed
find_package(ROOT REQUIRED COMPONENTS Core MathCore RIO Hist Tree)
Viktor's avatar
Viktor committed

# Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
include(${ROOT_USE_FILE})
add_definitions(${ROOT_CXX_FLAGS})

Viktor's avatar
Viktor committed
include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS})
Viktor's avatar
Viktor committed

Viktor Klochkov's avatar
Viktor Klochkov committed
set(DICT_FILE_NAME G__${PROJECT_NAME})
set(PCM_FILE_NAME lib${PROJECT_NAME})



ROOT_GENERATE_DICTIONARY(${DICT_FILE_NAME} ${HEADERS} LINKDEF src/CentralityLinkDef.h)
add_library(Centrality SHARED ${SOURCES} ${DICT_FILE_NAME})
Viktor's avatar
Viktor committed
target_link_libraries(Centrality ${ROOT_LIBRARIES})
Viktor's avatar
Viktor committed

# Create a main program using the library
Viktor's avatar
Viktor committed
add_executable(main main.cpp)
Viktor's avatar
Viktor committed
target_link_libraries(main Centrality ${ROOT_LIBRARIES})
Viktor's avatar
Viktor committed
target_include_directories(main PUBLIC src)
Viktor's avatar
Viktor committed

Viktor's avatar
Viktor committed
add_executable(glauber glauber/main.cpp)
Viktor's avatar
Viktor committed
target_link_libraries(glauber ${ROOT_LIBRARIES} Centrality)
Viktor's avatar
Viktor committed

Viktor's avatar
Viktor committed
# install(FILES ${HEADERS} DESTINATION include)
# install(TARGETS Centrality DESTINATION lib)

# Packaging routine
# For complete explanation
# @see https://cmake.org/cmake/help/git-master/manual/cmake-packages.7.html#creating-packages
include(GenerateExportHeader)


generate_export_header(Centrality)
set_property(TARGET Centrality PROPERTY VERSION ${PROJECT_VERSION})
set_property(TARGET Centrality PROPERTY SOVERSION ${PROJECT_VERSION})
set_property(TARGET Centrality PROPERTY INTERFACE_Centrality_MAJOR_VERSION 1)
set_property(TARGET Centrality APPEND PROPERTY COMPATIBLE_INTERFACE_STRING INTERFACE_Centrality_MAJOR_VERSION)

install(TARGETS Centrality EXPORT CentralityTargets
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        RUNTIME DESTINATION bin
        INCLUDES DESTINATION include
        )

install(
        FILES
        ${HEADERS}
        "${CMAKE_CURRENT_BINARY_DIR}/centrality_export.h"
        DESTINATION
Viktor's avatar
Viktor committed
        include/centrality
Viktor's avatar
Viktor committed
        COMPONENT
        Devel
)

install(
        FILES
        "${CMAKE_CURRENT_BINARY_DIR}/${PCM_FILE_NAME}_rdict.pcm"
        DESTINATION
        lib
        OPTIONAL
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
        "${CMAKE_CURRENT_BINARY_DIR}/Centrality/CentralityConfigVersion.cmake"
        VERSION ${PROJECT_VERSION}
        COMPATIBILITY AnyNewerVersion
)

export(EXPORT CentralityTargets
        FILE "${CMAKE_CURRENT_BINARY_DIR}/Centrality/CentralityTargets.cmake")

set(ConfigPackageLocation lib/cmake/Centrality)

set(Centrality_INCLUDE_DIR "include")
set(Centrality_LIBRARY_DIR "lib")

configure_package_config_file(
        CentralityConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/Centrality/CentralityConfig.cmake
        INSTALL_DESTINATION ${ConfigPackageLocation}
        PATH_VARS Centrality_INCLUDE_DIR Centrality_LIBRARY_DIR
        #  [NO_SET_AND_CHECK_MACRO]
        #  [NO_CHECK_REQUIRED_COMPONENTS_MACRO]
        #  [INSTALL_PREFIX <path>]
)

install(EXPORT CentralityTargets
        FILE
        CentralityTargets.cmake
        DESTINATION
        ${ConfigPackageLocation}
        )

install(FILES
        "${CMAKE_CURRENT_BINARY_DIR}/Centrality/CentralityConfig.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/Centrality/CentralityConfigVersion.cmake"
        DESTINATION
        ${ConfigPackageLocation}
        COMPONENT
        Devel
        )