1
0
mirror of synced 2024-06-07 13:17:57 +02:00
modern-cmake/examples/root-simple/CMakeLists.txt
Henry Fredrick Schreiner 49f3b682b2 Adding updates for ROOT
2018-05-01 18:01:36 +02:00

48 lines
1.5 KiB
CMake

## [main]
cmake_minimum_required(VERSION 3.1)
project(RootSimpleExample LANGUAGES CXX)
## [find_package]
find_package(ROOT CONFIG REQUIRED)
## [find_package]
message(STATUS "Found ROOT: ${ROOT_VERSION} at ${ROOT_DIR}")
# ROOT targets are missing includes and flags
## [setup_includes]
set_property(TARGET ROOT::Core PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${ROOT_INCLUDE_DIRS}")
## [setup_includes]
## [setup_flags]
# Fix for ROOT_CXX_FLAGS not actually being a CMake list
separate_arguments(ROOT_CXX_FLAGS)
separate_arguments(ROOT_DEFINITIONS)
# This is required on if there is more than one flag (like on macOS)
# and this also fixes a bug in the linker flags
string(REPLACE "-L " "-L" ROOT_EXE_LINKER_FLAGS "${ROOT_EXE_LINKER_FLAGS}")
separate_arguments(ROOT_EXE_LINKER_FLAGS)
add_library(ROOT::Flags_CXX IMPORTED INTERFACE)
set_property(TARGET ROOT::Flags_CXX APPEND PROPERTY
INTERFACE_COMPILE_OPTIONS ${ROOT_CXX_FLAGS})
set_property(TARGET ROOT::Flags_CXX APPEND PROPERTY
INTERFACE_COMPILE_DEFINITIONS ${ROOT_DEFINITIONS})
set_property(TARGET ROOT::Flags_CXX APPEND PROPERTY
INTERFACE_LINK_LIBRARIES ${ROOT_EXE_LINKER_FLAGS})
## [setup_flags]
# Adding an exectuable program and linking to needed ROOT libraries
## [add_and_link]
add_executable(RootSimpleExample SimpleExample.cxx)
target_link_libraries(RootSimpleExample PUBLIC ROOT::Physics ROOT::Flags_CXX)
## [add_and_link]
## [main]
enable_testing()
add_test(NAME RootSimpleExample COMMAND RootSimpleExample)