Skip to content
Snippets Groups Projects

Macro to add a library target for CbmRoot:

Closed Florian Uhlig requested to merge f.uhlig/cbmroot:test_modern_cmake into master
13 files
+ 436
509
Compare changes
  • Side-by-side
  • Inline
Files
13
@@ -190,4 +190,59 @@ MACRO (GENERATE_CBM_TEST_SCRIPT SCRIPT_FULL_NAME DEST_DIR)
ENDMACRO (GENERATE_CBM_TEST_SCRIPT)
#----- Macro GENERATE_CBM_TEST_SCRIPT --------------------------------------
macro(generate_cbm_library)
#macro for generating Cbm libraries
############### Changing the file extension .cxx to .h #################
foreach (SRCS ${SRCS})
string(REGEX REPLACE "[.]cxx$" ".h" HEADER "${SRCS}")
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}")
set(HEADERS ${HEADERS} ${HEADER})
endif()
endforeach()
foreach (HEADER ${HEADERS})
# strip relative path from headers to pass them to rootcling
get_filename_component(_rootheader ${HEADER} NAME)
list(APPEND ROOT_HEADERS ${_rootheader})
endforeach()
######################### build the library ############################
add_library(${LIBRARY_NAME} SHARED ${HEADERS} ${SRCS} ${NO_DICT_SRCS} ${LINKDEF})
target_link_libraries(${LIBRARY_NAME} PUBLIC ${DEPENDENCIES} ${PUBLIC_DEPENDENCIES} PRIVATE ${PRIVATE_DEPENDENCIES} INTERFACE ${INTERFACE_DEPENDENCIES})
target_include_directories(${LIBRARY_NAME} PUBLIC ${INCLUDE_DIRECTORIES})
if(LINKDEF)
root_generate_dictionary(G__${LIBRARY_NAME} ${ROOT_HEADERS} MODULE ${LIBRARY_NAME} LINKDEF ${LINKDEF})
endif(LINKDEF)
############# Install target and corresponding header files ############
install(TARGETS ${LIBRARY_NAME} DESTINATION lib)
install(FILES ${HEADERS} DESTINATION include)
if(LINKDEF)
set(rootmap_file ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}.rootmap)
set(pcm_file ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}_rdict.pcm)
add_custom_command(TARGET ${LIBRARY_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rootmap_file} ${LIBRARY_OUTPUT_PATH}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${pcm_file} ${LIBRARY_OUTPUT_PATH}
DEPENDS ${LIBRARY_NAME}
)
install(FILES ${rootmap_file} ${pcm_file} DESTINATION lib)
endif(LINKDEF)
set(LIBRARY_NAME)
set(LINKDEF)
set(SRCS)
set(HEADERS)
set(NO_DICT_SRCS)
set(DEPENDENCIES)
set(PUBLIC_DEPENDENCIES)
set(PRIVATE_DEPENDENCIES)
set(INTERFACE_DEPENDENCIES)
endmacro(generate_cbm_library)
Loading