Re-work the CMake project files for the plugandpaint example

Move the project prelude to
examples/widgets/tools/plugandpaint/CMakeLists.txt
to mark it as the entry point of the example project.

Remove the project prelude from all its subdirectories, because the
subdirs are not supposed to be built separately.

Remove the wrong code that pro2cmake generated for the application's
project file. That merely tried to link the basictools static plugin.

Move common initialization code (CMAKE_AUTO*, INSTALL_EXAMPLESDIR) to
the top-level plugandpaint project file.

Remove superfluous CMAKE_INCLUDE_CURRENT_DIR.

Set the output directory of the extrafilters plugin to the application's
build directory such that the app can find the plugin without having to
install the example.

Skip regeneration in those files, to avoid scattering the project files
with special case markers.

Fixes: QTBUG-87449
Fixes: QTBUG-91066
Change-Id: I3ceb08f5fcda1ffea3c35cee8580f7b5e4ecfc1f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Joerg Bornemann 2021-04-27 08:55:29 +02:00
parent a239045d59
commit 4caac1feea
5 changed files with 26 additions and 105 deletions

View File

@ -14,5 +14,9 @@ add_subdirectory(undoframework)
if(QT_FEATURE_library) # special case
add_subdirectory(echoplugin)
add_subdirectory(plugandpaint) # special case
# special case begin
if(QT_FEATURE_inputdialog)
add_subdirectory(plugandpaint)
endif()
# special case end
endif()

View File

@ -1,7 +1,19 @@
# Generated from plugandpaint.pro.
# special case skip regeneration
cmake_minimum_required(VERSION 3.14)
project(plugandpaint LANGUAGES CXX)
if(NOT QT_FEATURE_inputdialog)
return()
find_package(Qt6 COMPONENTS Core Gui Widgets)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/plugandpaint")
add_subdirectory(plugins)
add_subdirectory(app)

View File

@ -1,23 +1,5 @@
# Generated from app.pro.
cmake_minimum_required(VERSION 3.14)
project(plugandpaint LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/plugandpaint")
find_package(Qt6 COMPONENTS Core)
find_package(Qt6 COMPONENTS Gui)
find_package(Qt6 COMPONENTS Widgets)
# special case skip regeneration
qt_add_executable(plugandpaint
interfaces.h
@ -31,43 +13,9 @@ set_target_properties(plugandpaint PROPERTIES
MACOSX_BUNDLE TRUE
)
target_link_libraries(plugandpaint PUBLIC
# Remove: L../plugins
Qt::Core
Qt::Gui
Qt::Widgets
pnp_basictools # special case
pnp_basictools
)
target_link_libraries(plugandpaint PUBLIC pnp_basictools) # special case
if(macx-xcode)
target_link_libraries(plugandpaint PUBLIC
(
)
pnp_basictools$
)
endif()
if(NOT macx-xcode)
target_link_libraries(plugandpaint PUBLIC
pnp_basictools
)
endif()
if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (APPLE))
target_link_libraries(plugandpaint PUBLIC
(LIBS, 0)
(LIBS, 1)
_debug
)
endif()
if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (WIN32))
target_link_libraries(plugandpaint PUBLIC
(LIBS, 0)
(LIBS, 1)
d
)
endif()
install(TARGETS plugandpaint
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"

View File

@ -1,23 +1,5 @@
# Generated from basictools.pro.
cmake_minimum_required(VERSION 3.14)
project(pnp_basictools LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/plugandpaint/plugins")
find_package(Qt6 COMPONENTS Core)
find_package(Qt6 COMPONENTS Gui)
find_package(Qt6 COMPONENTS Widgets)
# special case skip regeneration
qt_add_plugin(pnp_basictools STATIC)
target_sources(pnp_basictools PRIVATE
@ -36,9 +18,3 @@ target_link_libraries(pnp_basictools PUBLIC
Qt::Gui
Qt::Widgets
)
install(TARGETS pnp_basictools
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

View File

@ -1,31 +1,13 @@
# Generated from extrafilters.pro.
cmake_minimum_required(VERSION 3.14)
project(pnp_extrafilters LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/plugandpaint/plugins")
find_package(Qt6 COMPONENTS Core)
find_package(Qt6 COMPONENTS Gui)
find_package(Qt6 COMPONENTS Widgets)
# special case skip regeneration
qt_add_plugin(pnp_extrafilters)
target_sources(pnp_extrafilters PRIVATE
extrafiltersplugin.cpp extrafiltersplugin.h
)
set_target_properties(pnp_extrafilters PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/app"
)
target_include_directories(pnp_extrafilters PUBLIC
../../app
@ -38,7 +20,6 @@ target_link_libraries(pnp_extrafilters PUBLIC
)
install(TARGETS pnp_extrafilters
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}/plugins"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}/plugins"
)