diff --git a/CMakeLists.txt b/CMakeLists.txt index c1299b0794..5b8f66af74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,17 @@ else() set(QT_MAJOR_VERSION 6) endif() +# If MRTRIX_SUBPROJECT_INSTALL_PREFIX is set, it will be used as the install prefix +# for all targets in this project. This is useful when MRtrix3 is built as a +# subproject of another project (e.g. via add_subdirectory or FetchContent). +if(NOT DEFINED MRTRIX_SUBPROJECT_INSTALL_PREFIX) + set(MRTRIX_SUBPROJECT_INSTALL_PREFIX "") +endif() +set(MRTRIX_INSTALL_BINDIR ${MRTRIX_SUBPROJECT_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR} CACHE INTERNAL "" FORCE) +set(MRTRIX_INSTALL_LIBDIR ${MRTRIX_SUBPROJECT_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} CACHE INTERNAL "" FORCE) +set(MRTRIX_INSTALL_INCLUDEDIR ${MRTRIX_SUBPROJECT_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR} CACHE INTERNAL "" FORCE) +set(MRTRIX_INSTALL_DATADIR ${MRTRIX_SUBPROJECT_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR} CACHE INTERNAL "" FORCE) + set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -57,8 +68,8 @@ else() endif() file(RELATIVE_PATH relDir - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + ${CMAKE_CURRENT_BINARY_DIR}/${MRTRIX_INSTALL_BINDIR} + ${CMAKE_CURRENT_BINARY_DIR}/${MRTRIX_INSTALL_LIBDIR} ) set(CMAKE_INSTALL_RPATH ${base} ${base}/${relDir}) diff --git a/cmd/CMakeLists.txt b/cmd/CMakeLists.txt index fd6de1b333..99af297692 100644 --- a/cmd/CMakeLists.txt +++ b/cmd/CMakeLists.txt @@ -44,8 +44,8 @@ function(add_cmd CMD_SRC IS_GUI) endif () install(TARGETS ${CMD_NAME} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} + RUNTIME DESTINATION ${MRTRIX_INSTALL_BINDIR} + BUNDLE DESTINATION ${MRTRIX_INSTALL_BINDIR} ) endfunction() diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 7cc54e9388..dc00b03dba 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -96,6 +96,6 @@ target_include_directories(mrtrix-core PUBLIC ) install(TARGETS mrtrix-core - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${MRTRIX_INSTALL_BINDIR} + LIBRARY DESTINATION ${MRTRIX_INSTALL_LIBDIR} ) diff --git a/python/mrtrix3/CMakeLists.txt b/python/mrtrix3/CMakeLists.txt index b11c6378bb..99b27384e1 100644 --- a/python/mrtrix3/CMakeLists.txt +++ b/python/mrtrix3/CMakeLists.txt @@ -66,10 +66,10 @@ add_custom_target(PythonLibFiles install(FILES ${PYTHON_LIB_FILES} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - DESTINATION ${CMAKE_INSTALL_LIBDIR}/mrtrix3 + DESTINATION ${MRTRIX_INSTALL_LIBDIR}/mrtrix3 ) install(FILES ${PYTHON_VERSION_FILE} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - DESTINATION ${CMAKE_INSTALL_LIBDIR}/mrtrix3 + DESTINATION ${MRTRIX_INSTALL_LIBDIR}/mrtrix3 ) diff --git a/python/mrtrix3/commands/CMakeLists.txt b/python/mrtrix3/commands/CMakeLists.txt index f8a37c0343..871af6fd57 100644 --- a/python/mrtrix3/commands/CMakeLists.txt +++ b/python/mrtrix3/commands/CMakeLists.txt @@ -63,7 +63,7 @@ foreach(PYTHON_SRC_PATH ${PYTHON_ALL_COMMANDS_FILES}) get_filename_component(DST_INSTALLDIR ${DST_RELPATH} DIRECTORY) install(FILES ${PYTHON_SRC_PATH} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - DESTINATION ${CMAKE_INSTALL_LIBDIR}/mrtrix3/commands/${DST_INSTALLDIR} + DESTINATION ${MRTRIX_INSTALL_LIBDIR}/mrtrix3/commands/${DST_INSTALLDIR} ) list(APPEND PYTHON_BUILD_COMMAND_FILES ${DST_PATH}) endforeach() @@ -100,10 +100,10 @@ add_custom_target(PythonCommands install(FILES ${PYTHON_BIN_FILES} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - DESTINATION ${CMAKE_INSTALL_BINDIR} + DESTINATION ${MRTRIX_INSTALL_BINDIR} ) install(FILES ${PYTHON_COMMANDS_INIT_FILE} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - DESTINATION ${CMAKE_INSTALL_LIBDIR}/mrtrix3/commands/ + DESTINATION ${MRTRIX_INSTALL_LIBDIR}/mrtrix3/commands/ ) diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index e51beb70eb..e72d899d7b 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -5,17 +5,17 @@ add_custom_target(copy-share-data ALL ) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mrtrix3/ - DESTINATION ${CMAKE_INSTALL_DATADIR}/mrtrix3 + DESTINATION ${MRTRIX_INSTALL_DATADIR}/mrtrix3 ) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons + DESTINATION ${MRTRIX_INSTALL_DATADIR}/icons ) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/applications/mrview.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications + DESTINATION ${MRTRIX_INSTALL_DATADIR}/applications ) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mime/mrtrix-mime.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/mime + DESTINATION ${MRTRIX_INSTALL_DATADIR}/mime ) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 55c51f5ecd..b894013e04 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -112,13 +112,13 @@ if(WIN32) endif() install(TARGETS mrtrix-headless - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${MRTRIX_INSTALL_BINDIR} + LIBRARY DESTINATION ${MRTRIX_INSTALL_LIBDIR} ) if(MRTRIX_BUILD_GUI) install(TARGETS mrtrix-gui - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${MRTRIX_INSTALL_BINDIR} + LIBRARY DESTINATION ${MRTRIX_INSTALL_LIBDIR} ) endif()