summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in25
-rw-r--r--tests/auto/cmake/CMakeLists.txt1
-rw-r--r--tests/auto/cmake/test_private_targets/CMakeLists.txt9
-rw-r--r--tests/auto/cmake/test_private_targets/main.cpp53
4 files changed, 88 insertions, 0 deletions
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
index d2358cae4b..866ace6c5c 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
@@ -166,6 +166,8 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
endif()
!!ENDIF
+ set(Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS})
+
set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED)
if (Qt5$${CMAKE_MODULE_NAME}_FIND_REQUIRED)
set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED REQUIRED)
@@ -243,6 +245,29 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY
INTERFACE_COMPILE_DEFINITIONS $${MODULE_DEFINE})
+ set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST TRUE)
+ foreach (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS})
+ if (NOT EXISTS ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR})
+ set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST FALSE)
+ endif()
+ endforeach()
+
+ if (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST)
+ add_library(Qt5::$${CMAKE_MODULE_NAME}Private INTERFACE IMPORTED)
+ set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY
+ INTERFACE_INCLUDE_DIRECTORIES ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS}
+ )
+ set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS)
+ foreach(dep ${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES})
+ if (TARGET ${dep}Private)
+ list(APPEND _Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS ${dep}Private)
+ endif()
+ endforeach()
+ set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY
+ INTERFACE_LINK_LIBRARIES Qt5::$${CMAKE_MODULE_NAME} ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS}
+ )
+ endif()
+
!!IF !equals(TEMPLATE, aux)
!!IF !isEmpty(CMAKE_RELEASE_TYPE)
!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index c780096854..0e6da23c09 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -97,6 +97,7 @@ if (NOT WIN32 OR (WIN32 AND NOT CMAKE_VERSION VERSION_LESS 2.8.11))
expect_pass(test_add_binary_resources_delayed_file BINARY test_add_binary_resources_delayed_file)
endif()
expect_pass(test_private_includes)
+expect_pass(test_private_targets)
expect_pass(test_testlib_definitions)
expect_pass(test_json_plugin_includes)
diff --git a/tests/auto/cmake/test_private_targets/CMakeLists.txt b/tests/auto/cmake/test_private_targets/CMakeLists.txt
new file mode 100644
index 0000000000..f7f3902869
--- /dev/null
+++ b/tests/auto/cmake/test_private_targets/CMakeLists.txt
@@ -0,0 +1,9 @@
+
+cmake_minimum_required(VERSION 3.0)
+
+project(test_private_targets)
+
+find_package(Qt5Gui REQUIRED)
+
+add_executable(testapp main.cpp)
+target_link_libraries(testapp Qt5::GuiPrivate)
diff --git a/tests/auto/cmake/test_private_targets/main.cpp b/tests/auto/cmake/test_private_targets/main.cpp
new file mode 100644
index 0000000000..40dc4c243c
--- /dev/null
+++ b/tests/auto/cmake/test_private_targets/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Stephen Kelly <steveire@gmail.com>
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QGuiApplication>
+
+#include <private/qwindow_p.h>
+#include <private/qobject_p.h>
+#include <QtGui/private/qwindow_p.h>
+#include <QtCore/private/qobject_p.h>
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ QWindow window;
+
+ auto windowPrivate = QWindowPrivate::get(&window);
+
+ if (windowPrivate->visible)
+ return 1;
+
+ auto objectPrivate = QObjectPrivate::get(&window);
+
+ auto mo = window.metaObject();
+
+ // Should be 0
+ return objectPrivate->signalIndex("destroyed()", &mo);
+}