aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-10-06 15:46:55 +0200
committerEike Ziller <eike.ziller@qt.io>2020-10-08 10:35:34 +0000
commit0b74ad4f60c25a8293ad6a72bc5012464d0ed528 (patch)
treed190fa3acb444146f3657df6323ae5d4f1ddc60d /cmake
parent759ec8419abab4433bf0d85c2414708fd664db82 (diff)
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 <ABBAPOH@gmail.com>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QbsAPI.cmake66
1 files changed, 39 insertions, 27 deletions
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}"
)