Subject: cmake: Search for/use Qt5Qml in a more absence-tolerant way.
Forwarded: https://github.com/cnr-isti-vclab/meshlab/pull/844
From: Ryan Pavlik <ryan@ryanpavlik.com>
Last-Update: 2020-12-01
Applied-Upstream: https://github.com/cnr-isti-vclab/meshlab/pull/844/commits/7f2ceea951575778027a5c312a4210462c91d997
Date: Tue, 1 Dec 2020 12:18:31 -0600

---
 src/CMakeLists.txt                                 |  2 +-
 src/meshlabplugins/filter_sketchfab/CMakeLists.txt | 33 ++++++++++++----------
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2c71082..b257233 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -71,7 +71,6 @@ find_package(
     Qt5
     COMPONENTS OpenGL Xml XmlPatterns
     REQUIRED)
-
 message(STATUS "Searching for required components with bundled fallback")
 find_package(GLEW)
 find_package(Eigen3)
@@ -84,6 +83,7 @@ find_package(OpenCTM)
 # TODO dynamic qhull that isn't qhull_r is deprecated: port to qhull_r
 find_package(Qhull COMPONENTS libqhull)
 find_package(OpenMP)
+find_package(Qt5Qml)
 
 if(WIN32)
     option(INSTALL_TO_UNIX_LAYOUT
diff --git a/src/meshlabplugins/filter_sketchfab/CMakeLists.txt b/src/meshlabplugins/filter_sketchfab/CMakeLists.txt
index a7d9163..9f42e04 100644
--- a/src/meshlabplugins/filter_sketchfab/CMakeLists.txt
+++ b/src/meshlabplugins/filter_sketchfab/CMakeLists.txt
@@ -5,26 +5,29 @@
 ### specifically src/templates/filter_sketchfab.cmake (custom for this directory),
 ### then re-run ./make-cmake.py
 
-find_package(Qt5 COMPONENTS Qml REQUIRED)
+if(TARGET Qt5::Qml)
+    set(SOURCES filter_sketchfab.cpp ${VCGDIR}/wrap/ply/plylib.cpp)
 
-set(SOURCES filter_sketchfab.cpp ${VCGDIR}/wrap/ply/plylib.cpp)
+    set(HEADERS filter_sketchfab.h miniz.h)
 
-set(HEADERS filter_sketchfab.h miniz.h)
+    add_library(filter_sketchfab MODULE ${SOURCES} ${HEADERS})
 
-add_library(filter_sketchfab MODULE ${SOURCES} ${HEADERS})
+    target_include_directories(filter_sketchfab PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+    target_link_libraries(filter_sketchfab PUBLIC Qt5::Qml common)
 
-target_include_directories(filter_sketchfab PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(filter_sketchfab PUBLIC Qt5::Qml common)
+    set_property(TARGET filter_sketchfab PROPERTY FOLDER Plugins)
 
-set_property(TARGET filter_sketchfab PROPERTY FOLDER Plugins)
+    set_property(TARGET filter_sketchfab PROPERTY RUNTIME_OUTPUT_DIRECTORY
+                                                  ${MESHLAB_PLUGIN_OUTPUT_DIR})
 
-set_property(TARGET filter_sketchfab PROPERTY RUNTIME_OUTPUT_DIRECTORY
-                                              ${MESHLAB_PLUGIN_OUTPUT_DIR})
+    set_property(TARGET filter_sketchfab PROPERTY LIBRARY_OUTPUT_DIRECTORY
+                                                  ${MESHLAB_PLUGIN_OUTPUT_DIR})
 
-set_property(TARGET filter_sketchfab PROPERTY LIBRARY_OUTPUT_DIRECTORY
-                                              ${MESHLAB_PLUGIN_OUTPUT_DIR})
+    install(
+        TARGETS filter_sketchfab
+        DESTINATION ${MESHLAB_PLUGIN_INSTALL_DIR}
+        COMPONENT Plugins)
 
-install(
-    TARGETS filter_sketchfab
-    DESTINATION ${MESHLAB_PLUGIN_INSTALL_DIR}
-    COMPONENT Plugins)
+else()
+    message(STATUS "Skipping filter_sketchfab - missing Qt5Qml")
+endif()
