summaryrefslogtreecommitdiffstats
path: root/tests/auto/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/cmake')
-rw-r--r--tests/auto/cmake/test_interface/CMakeLists.txt20
-rw-r--r--tests/auto/cmake/test_interface/widget_test/CMakeLists.txt12
-rw-r--r--tests/auto/cmake/test_interface/widget_test/main.cpp4
3 files changed, 22 insertions, 14 deletions
diff --git a/tests/auto/cmake/test_interface/CMakeLists.txt b/tests/auto/cmake/test_interface/CMakeLists.txt
index 0cae16668e..d874ac561d 100644
--- a/tests/auto/cmake/test_interface/CMakeLists.txt
+++ b/tests/auto/cmake/test_interface/CMakeLists.txt
@@ -14,23 +14,15 @@ add_executable(test_interface_exe WIN32 main.cpp mainwindow.cpp)
# link explicitly to Qt::WinMain.
target_link_libraries(test_interface_exe Qt::Widgets)
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/try_compile-test.cpp"
- "
-#include <QString>
-#include <QWidget>
-
-int main(int,char**) { QWidget w; w.show(); return 0; }
-"
-)
-
# Fix try_compile to inherit the parent configuration.
set(CMAKE_TRY_COMPILE_CONFIGURATION "${CMAKE_BUILD_TYPE}")
-# The try_compile works because Qt::Widgets is listed in the LINK_LIBRARIES,
-# which causes the includes, defines and appropriate PIC flag to be used.
-try_compile(_TRY_COMPILE_RES "${CMAKE_CURRENT_BINARY_DIR}/try_compile-test"
- "${CMAKE_CURRENT_BINARY_DIR}/try_compile-test.cpp"
- LINK_LIBRARIES Qt::Widgets
+# Can't use source file based try_compile, because it doesn't handle object libraries
+# referenced in generator expressions properly.
+try_compile(_TRY_COMPILE_RES
+ "${CMAKE_CURRENT_BINARY_DIR}/widget_test"
+ "${CMAKE_CURRENT_SOURCE_DIR}/widget_test"
+ widget_test
OUTPUT_VARIABLE TC_OV
)
diff --git a/tests/auto/cmake/test_interface/widget_test/CMakeLists.txt b/tests/auto/cmake/test_interface/widget_test/CMakeLists.txt
new file mode 100644
index 0000000000..679d01ef63
--- /dev/null
+++ b/tests/auto/cmake/test_interface/widget_test/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.14)
+
+project(test_interface_try_compile)
+
+find_package(Qt6Widgets)
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+add_executable(test_interface_try_compile_exe main.cpp)
+target_link_libraries(test_interface_try_compile_exe Qt::Widgets)
+
diff --git a/tests/auto/cmake/test_interface/widget_test/main.cpp b/tests/auto/cmake/test_interface/widget_test/main.cpp
new file mode 100644
index 0000000000..e6a8ab5fe9
--- /dev/null
+++ b/tests/auto/cmake/test_interface/widget_test/main.cpp
@@ -0,0 +1,4 @@
+#include <QString>
+#include <QWidget>
+
+int main(int, char**) { QWidget w; w.show(); return 0; }