CMake build: Make it possible to put plugins into Qt Creator build

In the super repository builds we want all plugins to end up
at a single place, so running the build result includes all plugins,
even without an explicit install.

With this patch we can set QTC_MERGE_BINARY_DIR in the super
CMakeLists.txt to achieve that.

Change-Id: I8b590e5a521a06aa5a8f00ef0e60f5c3b4349ee2
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Eike Ziller
2019-08-19 11:10:20 +02:00
parent 093d8100b7
commit a1d48830b1

View File

@@ -286,6 +286,14 @@ function(enable_pch target)
endif() endif()
endfunction() endfunction()
function(qtc_output_binary_dir varName)
if (QTC_MERGE_BINARY_DIR)
set(${varName} ${QtCreator_BINARY_DIR} PARENT_SCOPE)
else()
set(${varName} ${PROJECT_BINARY_DIR} PARENT_SCOPE)
endif()
endfunction()
# #
# Public API functions # Public API functions
# #
@@ -354,6 +362,7 @@ function(add_qtc_library name)
set_property(SOURCE ${file} PROPERTY SKIP_AUTOMOC ON) set_property(SOURCE ${file} PROPERTY SKIP_AUTOMOC ON)
endforeach() endforeach()
qtc_output_binary_dir(_output_binary_dir)
set_target_properties(${name} PROPERTIES set_target_properties(${name} PROPERTIES
SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}" SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
VERSION "${IDE_VERSION}" VERSION "${IDE_VERSION}"
@@ -361,9 +370,9 @@ function(add_qtc_library name)
VISIBILITY_INLINES_HIDDEN ON VISIBILITY_INLINES_HIDDEN ON
BUILD_RPATH "${_LIB_RPATH}" BUILD_RPATH "${_LIB_RPATH}"
INSTALL_RPATH "${_LIB_RPATH}" INSTALL_RPATH "${_LIB_RPATH}"
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${IDE_BIN_PATH}" RUNTIME_OUTPUT_DIRECTORY "${_output_binary_dir}/${IDE_BIN_PATH}"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${IDE_LIBRARY_PATH}" LIBRARY_OUTPUT_DIRECTORY "${_output_binary_dir}/${IDE_LIBRARY_PATH}"
ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${IDE_LIBRARY_PATH}" ARCHIVE_OUTPUT_DIRECTORY "${_output_binary_dir}/${IDE_LIBRARY_PATH}"
${_arg_PROPERTIES} ${_arg_PROPERTIES}
) )
enable_pch(${name}) enable_pch(${name})
@@ -551,6 +560,7 @@ function(add_qtc_plugin target_name)
set(plugin_dir "${_arg_PLUGIN_PATH}") set(plugin_dir "${_arg_PLUGIN_PATH}")
endif() endif()
qtc_output_binary_dir(_output_binary_dir)
set_target_properties(${target_name} PROPERTIES set_target_properties(${target_name} PROPERTIES
SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}" SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
CXX_VISIBILITY_PRESET hidden CXX_VISIBILITY_PRESET hidden
@@ -559,9 +569,9 @@ function(add_qtc_plugin target_name)
_arg_VERSION "${_arg_VERSION}" _arg_VERSION "${_arg_VERSION}"
BUILD_RPATH "${_PLUGIN_RPATH}" BUILD_RPATH "${_PLUGIN_RPATH}"
INSTALL_RPATH "${_PLUGIN_RPATH}" INSTALL_RPATH "${_PLUGIN_RPATH}"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${plugin_dir}" LIBRARY_OUTPUT_DIRECTORY "${_output_binary_dir}/${plugin_dir}"
ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${plugin_dir}" ARCHIVE_OUTPUT_DIRECTORY "${_output_binary_dir}/${plugin_dir}"
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${plugin_dir}" RUNTIME_OUTPUT_DIRECTORY "${_output_binary_dir}/${plugin_dir}"
OUTPUT_NAME "${name}" OUTPUT_NAME "${name}"
${_arg_PROPERTIES} ${_arg_PROPERTIES}
) )
@@ -697,10 +707,11 @@ function(add_qtc_executable name)
target_include_directories("${name}" PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES}) target_include_directories("${name}" PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES})
target_compile_definitions("${name}" PRIVATE ${_arg_DEFINES} ${TEST_DEFINES} ${DEFAULT_DEFINES}) target_compile_definitions("${name}" PRIVATE ${_arg_DEFINES} ${TEST_DEFINES} ${DEFAULT_DEFINES})
target_link_libraries("${name}" PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS}) target_link_libraries("${name}" PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS})
qtc_output_binary_dir(_output_binary_dir)
set_target_properties("${name}" PROPERTIES set_target_properties("${name}" PROPERTIES
BUILD_RPATH "${_RPATH_BASE}/${_RELATIVE_LIB_PATH}" BUILD_RPATH "${_RPATH_BASE}/${_RELATIVE_LIB_PATH}"
INSTALL_RPATH "${_RPATH_BASE}/${_RELATIVE_LIB_PATH}" INSTALL_RPATH "${_RPATH_BASE}/${_RELATIVE_LIB_PATH}"
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${_DESTINATION}" RUNTIME_OUTPUT_DIRECTORY "${_output_binary_dir}/${_DESTINATION}"
${_arg_PROPERTIES} ${_arg_PROPERTIES}
) )
enable_pch(${name}) enable_pch(${name})