Skip to content

Commit

Permalink
Merge pull request #583 from simonspa/cmake_targets
Browse files Browse the repository at this point in the history
Add proper CMake Targets
  • Loading branch information
eyiliu committed Oct 16, 2019
2 parents 191f4e6 + 394ffff commit 5f2fd24
Show file tree
Hide file tree
Showing 21 changed files with 109 additions and 38 deletions.
37 changes: 28 additions & 9 deletions CMakeLists.txt
@@ -1,11 +1,18 @@
project(EUDAQ)
set(${PROJECT_NAME}_VERSION_MAJOR 2 )
set(${PROJECT_NAME}_VERSION_MINOR 0 )
set(${PROJECT_NAME}_VERSION_MINOR 4 )
set(${PROJECT_NAME}_VERSION_PATCH 0 )

cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
include(CMakeDependentOption)


if(COMMAND CMAKE_POLICY)
if(${CMAKE_VERSION} VERSION_GREATER "3.13")
cmake_policy(SET CMP0079 NEW) # Allow lookup of linking libraries in other directories
endif()
endif(COMMAND CMAKE_POLICY)

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
include(CMakeCompatibility)
include(Platform)
Expand Down Expand Up @@ -42,6 +49,10 @@ if(GIT_FOUND AND (IS_DIRECTORY ${PROJECT_SOURCE_DIR}/.git))
endif()
message(STATUS "Determined EUDAQ version ${EUDAQ_LIB_VERSION}")

# Define the project with the simple version
string(REGEX MATCH "([0-9.]+)+" SIMPLE_VERSION "${EUDAQ_LIB_VERSION}")
project(eudaq VERSION ${SIMPLE_VERSION} LANGUAGES CXX)

configure_file("${PROJECT_SOURCE_DIR}/cmake/Config.cmake.hh" "${CMAKE_CURRENT_BINARY_DIR}/include/eudaq/Config.hh" @ONLY)
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
file(GLOB INC_FILES "${CMAKE_CURRENT_BINARY_DIR}/include/eudaq/*.hh")
Expand Down Expand Up @@ -121,22 +132,30 @@ if(DEFINED EUDAQ_LCIO_LIBRARY)
endif()

set(CONF_INCLUDE_DIRS "\${EUDAQ_INSTALL_DIR}/include")
configure_file("${PROJECT_SOURCE_DIR}/cmake/eudaqConfig.cmake.in"
"${PROJECT_BINARY_DIR}/eudaqConfig.cmake" @ONLY)
set(EUDAQ_INCLUDE_DIRS "include")
set(EUDAQ_LIBRARIES_DIRS "lib")
set(EUDAQ_CMAKE_DIR "cmake")

include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/eudaqConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/eudaqConfig.cmake
INSTALL_DESTINATION ${EUDAQ_CMAKE_DIR}
PATH_VARS EUDAQ_INCLUDE_DIRS EUDAQ_LIBRARIES_DIRS)

configure_file("${PROJECT_SOURCE_DIR}/cmake/eudaqConfigVersion.cmake.in"
"${PROJECT_BINARY_DIR}/eudaqConfigVersion.cmake" @ONLY)
write_basic_package_version_file(eudaqConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion)

install(FILES
"${PROJECT_BINARY_DIR}/eudaqConfig.cmake"
"${PROJECT_BINARY_DIR}/eudaqConfigVersion.cmake"
DESTINATION cmake
DESTINATION ${EUDAQ_CMAKE_DIR}
COMPONENT dev)

# Install the export set for use with the install-tree
install(EXPORT eudaqTargets
NAMESPACE eudaq_
DESTINATION cmake
NAMESPACE eudaq::
DESTINATION ${EUDAQ_CMAKE_DIR}
COMPONENT dev)

MESSAGE(STATUS "Check your configuration/flags with: cmake -L")
message(STATUS "Check your configuration/flags with: cmake -L")
16 changes: 4 additions & 12 deletions cmake/eudaqConfig.cmake.in
@@ -1,17 +1,9 @@
# - Config file for the FooBar package
# It defines the following variables
# EUDAQ_INCLUDE_DIRS - include directories for FooBar
# EUDAQ_LIBRARIES - libraries to link against
@PACKAGE_INIT@

# Compute paths
get_filename_component(EUDAQ_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(EUDAQ_INSTALL_DIR "${EUDAQ_CMAKE_DIR}" PATH)

# set(EUDAQ_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
set(EUDAQ_INCLUDE_DIRS ${EUDAQ_INSTALL_DIR}/include ${EUDAQ_INSTALL_DIR}/extern/include)
set(EUDAQ_LIBRARIES_DIRS ${EUDAQ_INSTALL_DIR}/lib ${EUDAQ_INSTALL_DIR}/extern/lib)
set_and_check(EUDAQ_INCLUDE_DIRS "@PACKAGE_EUDAQ_INCLUDE_DIRS@")
set_and_check(EUDAQ_LIBRARIES_DIRS "@PACKAGE_EUDAQ_LIBRARIES_DIRS@")

# Our library dependencies (contains definitions for IMPORTED targets)
include("${EUDAQ_CMAKE_DIR}/eudaqTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/eudaqTargets.cmake")

set(EUDAQ_LIBRARIES "@CONF_EUDAQ_LIBRARIES@")
11 changes: 0 additions & 11 deletions cmake/eudaqConfigVersion.cmake.in

This file was deleted.

1 change: 1 addition & 0 deletions main/lib/core/CMakeLists.txt
Expand Up @@ -21,6 +21,7 @@ endif()

list(APPEND ADDITIONAL_LIBRARIES ${CMAKE_DL_LIBS})
target_link_libraries(${EUDAQ_CORE_LIBRARY} ${EUDAQ_THREADS_LIB} ${ADDITIONAL_LIBRARIES})
target_include_directories(${EUDAQ_CORE_LIBRARY} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include>)

install(TARGETS ${EUDAQ_CORE_LIBRARY}
EXPORT eudaqTargets
Expand Down
8 changes: 5 additions & 3 deletions main/lib/lcio/CMakeLists.txt
Expand Up @@ -44,7 +44,7 @@ else()
PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/extern/LCIO-02-07-rpath.patch
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${EUDAQ_INSTALL_PREFIX}/extern -DBUILD_TESTING:BOOL=OFF -DBUILD_LCIO_EXAMPLES:BOOL=OFF -DCMAKE_INSTALL_RPATH:PATH=${EUDAQ_INSTALL_RPATH} -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON -DCMAKE_MACOSX_RPATH=ON
)

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(LCIO_LIBRARIES
${EUDAQ_INSTALL_PREFIX}/extern/lib/liblcio.dylib
Expand All @@ -56,7 +56,7 @@ else()
${EUDAQ_INSTALL_PREFIX}/extern/lib/libsio.so
CACHE INTERNAL "external lcio library")
endif()

set(EUDAQ_INCLUDE_DIRS
${EUDAQ_INCLUDE_DIRS}
${CMAKE_CURRENT_LIST_DIR}/include
Expand All @@ -68,7 +68,9 @@ else()
add_dependencies(${EUDAQ_COMPONENT} extern_lcio)
endif()

target_link_libraries(${EUDAQ_COMPONENT} ${EUDAQ_CORE_LIBRARY} ${LCIO_LIBRARIES})
target_link_libraries(${EUDAQ_COMPONENT} PUBLIC ${EUDAQ_CORE_LIBRARY})
target_link_libraries(${EUDAQ_COMPONENT} PRIVATE ${LCIO_LIBRARIES})
target_include_directories(${EUDAQ_CORE_LIBRARY} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include>)

install(TARGETS ${EUDAQ_COMPONENT}
EXPORT eudaqTargets
Expand Down
11 changes: 11 additions & 0 deletions user/CMakeLists.txt
@@ -1,4 +1,8 @@
include_directories(${EUDAQ_INCLUDE_DIRS})

# Define interface library for all EUDAQ modules:
add_library(modules INTERFACE)

add_subdirectory(example)
add_subdirectory(experimental)
add_subdirectory(eudet)
Expand All @@ -12,3 +16,10 @@ add_subdirectory(aidastrip)
add_subdirectory(tbscDESY)
add_subdirectory(MuPix8)
add_subdirectory(piStage)

# Install modules interface library
install(TARGETS modules
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/Dummy/module/CMakeLists.txt
Expand Up @@ -13,8 +13,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES})

# Add to modules library:
target_link_libraries(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/MuPix8/module/CMakeLists.txt
Expand Up @@ -21,8 +21,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${ROOT_LIBRARIES} ${MUPIX8DAQ_LIBRARY} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES} )

# Add to modules library:
target_link_libraries(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
5 changes: 4 additions & 1 deletion user/aidastrip/module/CMakeLists.txt
Expand Up @@ -24,10 +24,13 @@ target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
set_target_properties(${EUDAQ_MODULE} PROPERTIES INSTALL_RPATH
${EUDAQ_INSTALL_RPATH}:/usr/local/lib/kpix/)

# Add to modules library:
target_link_libraries(modules INTERFACE ${EUDAQ_MODULE})


install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)

4 changes: 4 additions & 0 deletions user/calice/module/CMakeLists.txt
Expand Up @@ -15,8 +15,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE}
${EUDAQ_CORE_LIBRARY} ${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES})

# Add to modules library:
tagret_link_libraries(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
8 changes: 6 additions & 2 deletions user/caribou/module/CMakeLists.txt
Expand Up @@ -2,12 +2,16 @@ aux_source_directory(src MODULE_SRC)
INCLUDE_DIRECTORIES(include)

ADD_LIBRARY(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY} ${Peary_LIBRARIES})

TARGET_LINK_LIBRARIES(${EUDAQ_MODULE} PUBLIC ${EUDAQ_CORE_LIBRARY})
target_link_libraries(${EUDAQ_MODULE} PRIVATE Caribou::peary Caribou::devices)
TARGET_INCLUDE_DIRECTORIES(${EUDAQ_MODULE} SYSTEM PRIVATE ${Peary_INCLUDE_DIRS})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
1 change: 1 addition & 0 deletions user/eudet/hardware/CMakeLists.txt
Expand Up @@ -13,6 +13,7 @@ endif()
# end library

install(TARGETS ${INSTALL_TARGETS}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
5 changes: 5 additions & 0 deletions user/eudet/module/CMakeLists.txt
Expand Up @@ -10,11 +10,16 @@ if(NOT USER_EUDET_BUILD)
endif()

add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})

target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES} ${USER_HARDWARE_LIBRARY})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/example/module/CMakeLists.txt
Expand Up @@ -8,8 +8,12 @@ endif()
add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY} ${EUDAQ_TTREE_LIBRARY})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/experimental/module/CMakeLists.txt
Expand Up @@ -12,8 +12,12 @@ aux_source_directory(src MODULE_SRC)
add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/itkstrip/module/CMakeLists.txt
Expand Up @@ -12,8 +12,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/piStage/module/CMakeLists.txt
Expand Up @@ -10,8 +10,12 @@ target_link_libraries(${EUDAQ_MODULE}
${EUDAQ_CORE_LIBRARY}
${USER_HARDWARE_LIBRARY})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/stcontrol/module/CMakeLists.txt
Expand Up @@ -18,8 +18,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/tbscDESY/module/CMakeLists.txt
Expand Up @@ -10,8 +10,12 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
message("[dev]: project_source_dir is ${PROJECT_SOURCE_DIR}; eudaq_install_rpath is ${EUDAQ_INSTALL_RPATH}")
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY} -L${PROJECT_SOURCE_DIR}/extern/lib/ -lodbc)

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/timepix3/module/CMakeLists.txt
Expand Up @@ -19,8 +19,12 @@ MESSAGE(STATUS "Timepix3 StandardEvent converter will be built")
ADD_LIBRARY(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
TARGET_LINK_LIBRARIES(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY} ${EUDAQ_LCIO_LIBRARY} ${EXT_LIBRARIES})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

INSTALL(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
4 changes: 4 additions & 0 deletions user/tlu/module/CMakeLists.txt
Expand Up @@ -17,13 +17,17 @@ add_library(${EUDAQ_MODULE} SHARED ${MODULE_SRC})
target_link_libraries(${EUDAQ_MODULE} ${EUDAQ_CORE_LIBRARY}
${EUDAQ_LCIO_LIBRARY} ${LCIO_LIBRARIES} ${USER_HARDWARE_LIBRARY})

# Add to modules library:
TARGET_LINK_LIBRARIES(modules INTERFACE ${EUDAQ_MODULE})

if(USER_TLU_BUILD_AIDA)
set_target_properties(${EUDAQ_MODULE} PROPERTIES INSTALL_RPATH
${EUDAQ_INSTALL_RPATH}:${CACTUS_LIBRARY_DIR})
endif()

install(TARGETS
${EUDAQ_MODULE}
EXPORT eudaqTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)

0 comments on commit 5f2fd24

Please sign in to comment.