mirror of
1
0
Fork 0
modern-cmake/examples/root-simple/CMakeLists.txt

50 lines
1.5 KiB
CMake
Raw Normal View History

2018-03-28 22:48:45 +02:00
## [main]
2018-03-28 20:50:38 +02:00
cmake_minimum_required(VERSION 3.1)
2018-03-28 22:48:45 +02:00
project(RootSimpleExample LANGUAGES CXX)
2018-03-28 20:50:38 +02:00
2018-03-28 22:48:45 +02:00
## [find_package]
2018-03-28 20:50:38 +02:00
find_package(ROOT CONFIG REQUIRED)
2018-03-28 22:48:45 +02:00
## [find_package]
2018-03-28 20:50:38 +02:00
2018-03-28 22:48:45 +02:00
# ROOT targets are missing includes and flags
2018-05-01 17:18:27 +02:00
## [setup_includes]
set_property(TARGET ROOT::Core PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${ROOT_INCLUDE_DIRS}")
## [setup_includes]
## [setup_flags]
2018-05-02 10:48:50 +02:00
add_library(ROOT::Flags_CXX IMPORTED INTERFACE)
2018-03-28 22:48:45 +02:00
# Fix for ROOT_CXX_FLAGS not actually being a CMake list
2018-03-29 19:30:00 +02:00
separate_arguments(ROOT_CXX_FLAGS)
2018-05-02 10:48:50 +02:00
set_property(TARGET ROOT::Flags_CXX APPEND PROPERTY
INTERFACE_COMPILE_OPTIONS ${ROOT_CXX_FLAGS})
# Add definitions
2018-05-01 17:18:27 +02:00
separate_arguments(ROOT_DEFINITIONS)
2018-05-02 10:48:50 +02:00
foreach(_flag ${ROOT_EXE_LINKER_FLAG_LIST})
# Remove -D or /D if present
string(REGEX REPLACE [=[^[-//]D]=] "" _flag ${_flag})
set_property(TARGET ROOT::Flags APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${_flag})
endforeach()
2018-03-28 20:50:38 +02:00
2018-05-02 10:48:50 +02:00
# This also fixes a bug in the linker flags
2018-05-01 17:18:27 +02:00
string(REPLACE "-L " "-L" ROOT_EXE_LINKER_FLAGS "${ROOT_EXE_LINKER_FLAGS}")
separate_arguments(ROOT_EXE_LINKER_FLAGS)
set_property(TARGET ROOT::Flags_CXX APPEND PROPERTY
INTERFACE_LINK_LIBRARIES ${ROOT_EXE_LINKER_FLAGS})
## [setup_flags]
2018-03-28 20:50:38 +02:00
2018-03-29 13:26:47 +02:00
# Adding an exectuable program and linking to needed ROOT libraries
2018-03-28 22:48:45 +02:00
## [add_and_link]
2018-03-29 12:27:23 +02:00
add_executable(RootSimpleExample SimpleExample.cxx)
2018-05-01 17:18:27 +02:00
target_link_libraries(RootSimpleExample PUBLIC ROOT::Physics ROOT::Flags_CXX)
2018-03-28 22:48:45 +02:00
## [add_and_link]
## [main]
2018-03-28 20:50:38 +02:00
enable_testing()
2018-03-29 12:27:23 +02:00
add_test(NAME RootSimpleExample COMMAND RootSimpleExample)