From 0b74ad4f60c25a8293ad6a72bc5012464d0ed528 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 6 Oct 2020 15:46:55 +0200 Subject: cmake: Make build output & install locations configurable So we can configure the right paths for direct inclusion in the Qt Creator build. Change-Id: Ie83eb402f0d9ce5f1ef32737921dc2ec8b43a315 Reviewed-by: Ivan Komissarov --- cmake/QbsAPI.cmake | 66 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 27 deletions(-) (limited to 'cmake') diff --git a/cmake/QbsAPI.cmake b/cmake/QbsAPI.cmake index 9303c9c9f..26e658374 100644 --- a/cmake/QbsAPI.cmake +++ b/cmake/QbsAPI.cmake @@ -1,11 +1,34 @@ -set(QBS_APP_INSTALL_DIR "bin") +# default paths set(QBS_LIBDIR_NAME "lib") +if(WIN32) + set(_DEFAULT_LIB_INSTALL_DIR ${QBS_APP_INSTALL_DIR}) + set(_DEFAULT_LIBEXEC_INSTALL_DIR ${QBS_APP_INSTALL_DIR}) +else() + set(_DEFAULT_LIB_INSTALL_DIR ${QBS_LIBDIR_NAME}) + set(_DEFAULT_LIBEXEC_INSTALL_DIR "libexec/qbs") +endif() +# path options +set(QBS_OUTPUT_PREFIX "" CACHE STRING "Qbs build output location relative to CMAKE_BINARY_DIR.") +set(QBS_APP_INSTALL_DIR "bin" CACHE STRING "Relative install location for Qbs binaries.") +set(QBS_LIB_INSTALL_DIR "${_DEFAULT_LIB_INSTALL_DIR}" CACHE STRING "Relative install location for Qbs libraries.") +set(QBS_LIBEXEC_INSTALL_DIR "${_DEFAULT_LIBEXEC_INSTALL_DIR}" CACHE STRING "Relative install location for Qbs libexec.") +set(QBS_PLUGINS_INSTALL_BASE "${QBS_LIBDIR_NAME}" CACHE STRING "Relative install location for Qbs plugins.") +set(QBS_RESOURCES_INSTALL_BASE "." CACHE STRING "Relative install location for Qbs resources.") +set(QBS_HEADERS_INSTALL_DIR "include/qbs" CACHE STRING "Relative install location for Qbs headers.") + +set(QBS_PLUGINS_INSTALL_DIR "${QBS_PLUGINS_INSTALL_BASE}/qbs/plugins") +set(QBS_RESOURCES_INSTALL_DIR "${QBS_RESOURCES_INSTALL_BASE}/share") + +# rpaths +file(RELATIVE_PATH QBS_RELATIVE_LIBEXEC_RPATH "/${QBS_LIBEXEC_INSTALL_DIR}" "/${QBS_LIB_INSTALL_DIR}") +file(RELATIVE_PATH QBS_RELATIVE_APP_RPATH "/${QBS_APP_INSTALL_DIR}" "/${QBS_LIB_INSTALL_DIR}") +file(RELATIVE_PATH QBS_RELATIVE_PLUGINS_RPATH "/${QBS_PLUGINS_INSTALL_DIR}" "/${QBS_LIB_INSTALL_DIR}") if(APPLE) set(QBS_LIB_RPATH "@loader_path") - set(QBS_LIBEXEC_RPATH "@loader_path/../../${QBS_LIBDIR_NAME}") - set(QBS_APP_RPATH "@loader_path/../${QBS_LIBDIR_NAME}") - set(QBS_PLUGINS_RPATH "@loader_path/../../../${QBS_LIBDIR_NAME}") + set(QBS_LIBEXEC_RPATH "@loader_path/${QBS_RELATIVE_LIBEXEC_RPATH}") + set(QBS_APP_RPATH "@loader_path/${QBS_RELATIVE_APP_RPATH}") + set(QBS_PLUGINS_RPATH "@loader_path/${QBS_RELATIVE_PLUGINS_RPATH}") elseif(WIN32) set(QBS_LIB_RPATH "") set(QBS_LIBEXEC_RPATH "") @@ -13,17 +36,9 @@ elseif(WIN32) set(QBS_PLUGINS_RPATH "") else() set(QBS_LIB_RPATH "\$ORIGIN") - set(QBS_LIBEXEC_RPATH "\$ORIGIN/../../${QBS_LIBDIR_NAME}") - set(QBS_APP_RPATH "\$ORIGIN/../${QBS_LIBDIR_NAME}") - set(QBS_PLUGINS_RPATH "\$ORIGIN/../../../${QBS_LIBDIR_NAME}") -endif() - -if(WIN32) - set(QBS_LIB_INSTALL_DIR ${QBS_APP_INSTALL_DIR}) - set(QBS_LIBEXEC_PATH ${QBS_APP_INSTALL_DIR}) -else() - set(QBS_LIB_INSTALL_DIR ${QBS_LIBDIR_NAME}) - set(QBS_LIBEXEC_PATH "libexec/qbs") + set(QBS_LIBEXEC_RPATH "\$ORIGIN/${QBS_RELATIVE_LIBEXEC_RPATH}") + set(QBS_APP_RPATH "\$ORIGIN/${QBS_RELATIVE_APP_RPATH}") + set(QBS_PLUGINS_RPATH "\$ORIGIN/${QBS_RELATIVE_PLUGINS_RPATH}") endif() if(WITH_UNIT_TESTS) @@ -38,12 +53,9 @@ else() set(QBS_PROJECT_FILE_UPDATES_DEFINES "") endif() -set(QBS_PLUGINS_INSTALL_DIR "${QBS_LIBDIR_NAME}/qbs/plugins") -set(QBS_RELATIVE_LIBEXEC_PATH "../${QBS_LIBEXEC_PATH}") -set(QBS_RELATIVE_SEARCH_PATH "..") -set(QBS_RELATIVE_PLUGINS_PATH "../${QBS_LIBDIR_NAME}") -set(QBS_RESOURCES_INSTALL_DIR "") -set(QBS_HEADERS_INSTALL_DIR "include/qbs") +file(RELATIVE_PATH QBS_RELATIVE_LIBEXEC_PATH "/${QBS_APP_INSTALL_DIR}" "/${QBS_LIBEXEC_INSTALL_DIR}") +file(RELATIVE_PATH QBS_RELATIVE_SEARCH_PATH "/${QBS_APP_INSTALL_DIR}" "/${QBS_RESOURCES_INSTALL_BASE}") +file(RELATIVE_PATH QBS_RELATIVE_PLUGINS_PATH "/${QBS_APP_INSTALL_DIR}" "/${QBS_PLUGINS_INSTALL_BASE}") set(DEFAULT_DEFINES "") if(WIN32) @@ -84,7 +96,7 @@ function(add_qbs_app target_name) target_link_libraries(${target_name} PRIVATE ${_arg_DEPENDS} PUBLIC ${_arg_PUBLIC_DEPENDS}) set_target_properties(${target_name} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${_DESTINATION} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${_DESTINATION} BUILD_RPATH "${QBS_APP_RPATH}" INSTALL_RPATH "${QBS_APP_RPATH}" ) @@ -123,8 +135,8 @@ function(add_qbs_library target_name) target_link_libraries(${target_name} PRIVATE ${_arg_DEPENDS} PUBLIC ${_arg_PUBLIC_DEPENDS}) set_target_properties(${target_name} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_LIB_INSTALL_DIR} - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_LIB_INSTALL_DIR} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_LIB_INSTALL_DIR} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_LIB_INSTALL_DIR} BUILD_RPATH "${QBS_LIB_RPATH}" INSTALL_RPATH "${QBS_LIB_RPATH}" SOVERSION ${_SOVERSION} @@ -155,8 +167,8 @@ function(add_qbs_plugin target_name) target_link_libraries(${target_name} PRIVATE ${_arg_DEPENDS} PUBLIC ${_arg_PUBLIC_DEPENDS}) set_target_properties(${target_name} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_PLUGINS_INSTALL_DIR} - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_PLUGINS_INSTALL_DIR} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_PLUGINS_INSTALL_DIR} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_PLUGINS_INSTALL_DIR} BUILD_RPATH "${QBS_PLUGINS_RPATH}" INSTALL_RPATH "${QBS_PLUGINS_RPATH}" ) @@ -199,7 +211,7 @@ function(add_qbs_test test_name) ) set_target_properties(${target_name} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_APP_INSTALL_DIR} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_APP_INSTALL_DIR} BUILD_RPATH "${QBS_APP_RPATH}" INSTALL_RPATH "${QBS_APP_RPATH}" ) -- cgit v1.2.3