diff --git a/CMakeLists.txt b/CMakeLists.txt index abfea7d..384573c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,16 @@ list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # Find Find # Add src as a global include directory include_directories(${CMAKE_SOURCE_DIR}/src) + +# Add library directories to rpath so users don't need to use LD_LIBRARY_PATH. +# (see https://dev.my-gate.net/2021/08/04/understanding-rpath-with-cmake ) +# TODO: detector MacOS and set MACOSX_RPATH to TRUE +set( CMAKE_SKIP_BUILD_RPATH FALSE ) +set( CMAKE_BUILD_WITH_INSTALL_RPATH FALSE ) +set( CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" ) +set( CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE ) + + # Libraries are a separated objects. # We add this include directory so that in code we could use # #include instead of diff --git a/cmake/jana_plugin.cmake b/cmake/jana_plugin.cmake index 33d793e..0390488 100644 --- a/cmake/jana_plugin.cmake +++ b/cmake/jana_plugin.cmake @@ -32,8 +32,8 @@ macro(plugin_add _name) target_include_directories(${_name}_plugin SYSTEM PUBLIC ${ROOT_INCLUDE_DIRS} ) target_include_directories(${_name}_plugin PUBLIC ${fmt_DIR}/../../../include) set_target_properties(${_name}_plugin PROPERTIES PREFIX "" OUTPUT_NAME "${_name}" SUFFIX ".so") - target_link_libraries(${_name}_plugin ${JANA_LIB} spdlog::spdlog) - target_link_libraries(${_name}_plugin ${JANA_LIB} fmt::fmt) + target_link_libraries(${_name}_plugin spdlog::spdlog) + target_link_libraries(${_name}_plugin fmt::fmt) # Install plugin install(TARGETS ${_name}_plugin DESTINATION ${PLUGIN_OUTPUT_DIRECTORY}) @@ -46,8 +46,8 @@ macro(plugin_add _name) target_include_directories(${_name}_library SYSTEM PUBLIC ${JANA_INCLUDE_DIR} ) target_include_directories(${_name}_library PUBLIC ${fmt_DIR}/../../../include) set_target_properties(${_name}_library PROPERTIES PREFIX "lib" OUTPUT_NAME "${_name}" SUFFIX ".a") - target_link_libraries(${_name}_library ${JANA_LIB} spdlog::spdlog) - target_link_libraries(${_name}_library ${JANA_LIB} fmt::fmt) + target_link_libraries(${_name}_library spdlog::spdlog) + target_link_libraries(${_name}_library fmt::fmt) # Install plugin install(TARGETS ${_name}_library DESTINATION ${PLUGIN_LIBRARY_OUTPUT_DIRECTORY}) diff --git a/src/executables/jana4ml4fpga/CMakeLists.txt b/src/executables/jana4ml4fpga/CMakeLists.txt index 6494d38..7976e0f 100644 --- a/src/executables/jana4ml4fpga/CMakeLists.txt +++ b/src/executables/jana4ml4fpga/CMakeLists.txt @@ -13,7 +13,8 @@ message("{{JANA_INCLUDE_DIR}} ${JANA_INCLUDE_DIR}") add_executable(${PROJECT_NAME} ${block_tester_SRC}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR} ${JANA_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${JANA_LIB} evio rawdataparser Threads::Threads dl ${ROOT_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} evio rawdataparser ${JANA_LIB} Threads::Threads dl ${ROOT_LIBRARIES}) +target_link_options(${PROJECT_NAME} PRIVATE -rdynamic) set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) install(TARGETS ${PROJECT_NAME} DESTINATION ${PROGRAM_OUTPUT_DIRECTORY}) diff --git a/src/libraries/evio/CMakeLists.txt b/src/libraries/evio/CMakeLists.txt index aabcf98..ddfa3a3 100644 --- a/src/libraries/evio/CMakeLists.txt +++ b/src/libraries/evio/CMakeLists.txt @@ -12,9 +12,7 @@ file(GLOB lib_evio_SRC set(LIBRARY_NAME evio) -add_library(${LIBRARY_NAME} STATIC ${lib_evio_SRC}) -set_target_properties(${LIBRARY_NAME} PROPERTIES PREFIX "lib" OUTPUT_NAME "EVIO") +add_library(${LIBRARY_NAME} SHARED ${lib_evio_SRC}) target_include_directories(${LIBRARY_NAME} PUBLIC ${CMAKE_SOURCE_DIR} ${JANA_INCLUDE_DIR}) -target_link_libraries(${LIBRARY_NAME} ${JANA_LIB}) install(TARGETS ${LIBRARY_NAME} DESTINATION ${LIBRARY_OUTPUT_DIRECTORY}) diff --git a/src/libraries/rawdataparser/CMakeLists.txt b/src/libraries/rawdataparser/CMakeLists.txt index e1e3433..eee58c7 100644 --- a/src/libraries/rawdataparser/CMakeLists.txt +++ b/src/libraries/rawdataparser/CMakeLists.txt @@ -19,10 +19,8 @@ set(lib_rawdataparser_SRC set(LIBRARY_NAME rawdataparser) -add_library(${LIBRARY_NAME} STATIC ${lib_rawdataparser_SRC}) -set_target_properties(${LIBRARY_NAME} PROPERTIES PREFIX "lib" OUTPUT_NAME "rawdataparser") +add_library(${LIBRARY_NAME} SHARED ${lib_rawdataparser_SRC}) target_include_directories(${LIBRARY_NAME} PUBLIC ${CMAKE_SOURCE_DIR} ${JANA_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS}) -target_link_libraries(${LIBRARY_NAME} ${JANA_LIB}) install(TARGETS ${LIBRARY_NAME} DESTINATION ${LIBRARY_OUTPUT_DIRECTORY})