diff --git a/.vscode/settings.json b/.vscode/settings.json index 39a2e071..caf263f1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,7 @@ "qevent": "cpp" }, "cmake.configureSettings": { - "OPTION_DEVELOPER_MODE" : "ON", - "OPTION_QTQUICK" : true + "KDDockWidgets_DEVELOPER_MODE" : "ON", + "KDDockWidgets_QTQUICK" : true } } diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b7a2c5f..426d4800 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,19 +27,24 @@ # Build the API documentation. # Default=false # -# -DOPTION_DEVELOPER_MODE=[true|false] +# -DKDDockWidgets_DEVELOPER_MODE=[true|false] # Configure the build for a developer setup. # Enables some features that are not geared towards end-users. # Forces the test harness to be built. # Default=false # -# -DOPTION_BUILD_PYTHON_BINDINGS=[true|false] +# -DKDDockWidgets_QTQUICK == IN DEVELOPMENT. DO NOT USE! == +# Build for QtQuick instead of QtWidgets +# Default=false +# +# -DKDDockWidgets_PYTHON_BINDINGS=[true|false] # Build/Generate python bindings. Always false for Debug builds # Default=false # -# -DPYTHON_BINDINGS_INSTALL_PREFIX=[path] +# -DKDDockWidgets_PYTHON_BINDINGS_INSTALL_PREFIX=[path] # alternative install path for python bindings # Default=CMAKE_INSTALL_PREFIX +# cmake_minimum_required(VERSION 3.7) if(POLICY CMP0020) @@ -74,9 +79,9 @@ set(${PROJECT_NAME}_SOVERSION "1.1") include(FeatureSummary) -option(OPTION_DEVELOPER_MODE "Developer Mode" OFF) -option(OPTION_BUILD_PYTHON_BINDINGS "Build python bindings" OFF) -if(OPTION_BUILD_PYTHON_BINDINGS AND (CMAKE_BUILD_TYPE MATCHES "^[Dd]eb" OR ${PROJECT_NAME}_STATIC)) +option(${PROJECT_NAME}_DEVELOPER_MODE "Developer Mode" OFF) +option(${PROJECT_NAME}_PYTHON_BINDINGS "Build python bindings" OFF) +if(${PROJECT_NAME}_PYTHON_BINDINGS AND (CMAKE_BUILD_TYPE MATCHES "^[Dd]eb" OR ${PROJECT_NAME}_STATIC)) message(FATAL_ERROR "** Python Bindings are disabled in debug or static builds.") endif() option(${PROJECT_NAME}_TESTS "Build the tests" OFF) @@ -84,11 +89,11 @@ option(${PROJECT_NAME}_EXAMPLES "Build the examples" ON) option(${PROJECT_NAME}_DOCS "Build the API documentation" OFF) #Always build the test harness in developer-mode -if(OPTION_DEVELOPER_MODE) +if(${PROJECT_NAME}_DEVELOPER_MODE) set(${PROJECT_NAME}_TESTS ON) endif() -# option(OPTION_QTQUICK "Build for QtQuick instead of QtWidgets" OFF) +#option(${PROJECT_NAME}_QTQUICK "Build for QtQuick instead of QtWidgets" OFF) find_package(Qt5Widgets 5.9 REQUIRED) @@ -104,7 +109,7 @@ include(InstallLocation) include(QtInstallPaths) #to set QT_INSTALL_FOO variables macro(set_compiler_flags targetName) - if(OPTION_DEVELOPER_MODE) + if(${PROJECT_NAME}_DEVELOPER_MODE) target_compile_definitions(${targetName} PRIVATE DOCKS_DEVELOPER_MODE QT_FORCE_ASSERTS) if(NOT MSVC) target_compile_options(${targetName} PRIVATE -Wall -Wextra -Werror -Wno-error=deprecated-declarations) @@ -112,7 +117,7 @@ macro(set_compiler_flags targetName) endif() endmacro() -if(OPTION_QTQUICK) +if(${PROJECT_NAME}_QTQUICK) find_package(Qt5Quick) find_package(Qt5QuickControls2) add_definitions(-DKDDOCKWIDGETS_QTQUICK) @@ -147,12 +152,12 @@ install(FILES LICENSE.txt README.md DESTINATION ${INSTALL_DOC_DIR}) install(DIRECTORY LICENSES DESTINATION ${INSTALL_DOC_DIR}) add_subdirectory(src) -if(OPTION_BUILD_PYTHON_BINDINGS) +if(${PROJECT_NAME}_PYTHON_BINDINGS) add_subdirectory(python) endif() if(${PROJECT_NAME}_EXAMPLES) - if (OPTION_QTQUICK) + if (${PROJECT_NAME}_QTQUICK) add_subdirectory(examples/qtquick) set_compiler_flags(kddockwidgets_example_quick) else() @@ -163,13 +168,13 @@ if(${PROJECT_NAME}_EXAMPLES) endif() endif() -if(OPTION_DEVELOPER_MODE) +if(${PROJECT_NAME}_DEVELOPER_MODE) include(ECMEnableSanitizers) if(${PROJECT_NAME}_TESTS) enable_testing() add_subdirectory(tests) - if (NOT OPTION_QTQUICK) + if (NOT ${PROJECT_NAME}_QTQUICK) #Require Qt5.15.1 or higher to run the tests_launcher tests on Mac if(NOT APPLE OR Qt5Widgets_VERSION VERSION_GREATER 5.15.0) # tst_docks.exe is pretty big (140 tests), so split it in 6 runs so we can use threads. diff --git a/README.md b/README.md index bb27f933..a120b6f8 100644 --- a/README.md +++ b/README.md @@ -114,13 +114,13 @@ For more info visit https://doc.qt.io/qtforpython/shiboken2/gettingstarted.html Once QtForPython is installed you are ready to generate the PySide bindings for KDDockwWidgets. -Next pass `-DOPTION_BUILD_PYTHON_BINDINGS=ON` to CMake, followed by the +Next pass `-DKDDockWidgets_PYTHON_BINDINGS=ON` to CMake, followed by the make command. The bindings will be installed to the passed `-DCMAKE_INSTALL_PREFIX`, which might require setting the `PYTHONPATH` env variable to point to that path when running applications. Alternatively, configure the bindings install location -by passing `-DPYTHON_BINDINGS_INSTALL_PREFIX=/usr/lib/python3.8/site-packages` +by passing `-DKDDockWidgets_PYTHON_BINDINGS_INSTALL_PREFIX=/usr/lib/python3.8/site-packages` to CMake (adjust to the python path on your system). To run the KDDW python example diff --git a/cmake/Python/PySide2ModuleBuild.cmake b/cmake/Python/PySide2ModuleBuild.cmake index 2236df21..8fcd4c7f 100644 --- a/cmake/Python/PySide2ModuleBuild.cmake +++ b/cmake/Python/PySide2ModuleBuild.cmake @@ -7,11 +7,11 @@ # Contact KDAB at for commercial licensing options. # -if (NOT PYTHON_BINDINGS_INSTALL_PREFIX) - SET(PYTHON_BINDINGS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Custom path to install python bindings.") +if (NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX) + SET(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Custom path to install python bindings.") endif() -message(STATUS "PYTHON INSTALL PREFIX ${PYTHON_BINDINGS_INSTALL_PREFIX}") +message(STATUS "PYTHON INSTALL PREFIX ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}") if (WIN32) set(PATH_SEP "\;") @@ -153,5 +153,5 @@ macro(CREATE_PYTHON_BINDINGS LINK_FLAGS "-undefined dynamic_lookup") endif() install(TARGETS ${TARGET_NAME} - LIBRARY DESTINATION ${PYTHON_BINDINGS_INSTALL_PREFIX}/${TARGET_NAME}) + LIBRARY DESTINATION ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}/${TARGET_NAME}) endmacro() diff --git a/conan/conanfile.py b/conan/conanfile.py index 46164653..57155408 100644 --- a/conan/conanfile.py +++ b/conan/conanfile.py @@ -51,7 +51,7 @@ class KDDockWidgetsConan(ConanFile): self.cmake.definitions["KDDockWidgets_STATIC"] = self.options.build_static self.cmake.definitions["KDDockWidgets_EXAMPLES"] = self.options.build_examples self.cmake.definitions["KDDockWidgets_TESTS"] = self.options.build_tests - self.cmake.definitions["OPTION_BUILD_PYTHON_BINDINGS"] = self.options.build_python_bindings + self.cmake.definitions["KDDockWidgets_PYTHON_BINDINGS"] = self.options.build_python_bindings self.cmake.configure() self.cmake.build() diff --git a/python/PyKDDockWidgets/CMakeLists.txt b/python/PyKDDockWidgets/CMakeLists.txt index 66cee096..6d9a6a15 100644 --- a/python/PyKDDockWidgets/CMakeLists.txt +++ b/python/PyKDDockWidgets/CMakeLists.txt @@ -78,4 +78,4 @@ create_python_bindings( configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/__init__.py) # install -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${PYTHON_BINDINGS_INSTALL_PREFIX}/PyKDDockWidgets) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}/PyKDDockWidgets) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 36d72444..74c3eebe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -83,7 +83,7 @@ set(DOCKS_INSTALLABLE_PRIVATE_WIDGET_INCLUDES private/widgets/TabWidget_p.h ) -if(OPTION_QTQUICK) +if(${PROJECT_NAME}_QTQUICK) set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS} private/quick/DockWidgetQuick.cpp private/quick/QWidgetAdapter_quick.cpp @@ -167,7 +167,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR IS_CLANG_BUILD) endif() endif() -if(OPTION_QTQUICK) +if(${PROJECT_NAME}_QTQUICK) target_link_libraries(kddockwidgets PUBLIC Qt5::Widgets Qt5::Quick Qt5::QuickControls2 kddockwidgets_multisplitter PRIVATE Qt5::GuiPrivate) else() target_link_libraries(kddockwidgets PUBLIC Qt5::Widgets kddockwidgets_multisplitter PRIVATE Qt5::GuiPrivate) @@ -232,11 +232,11 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KDDockWidgetsConfig.cmake" DESTINATION ${INSTALL_LIBRARY_DIR}/cmake/KDDockWidgets ) -if(OPTION_DEVELOPER_MODE) +if(${PROJECT_NAME}_DEVELOPER_MODE) # Under developer mode since kddw might be a sub-folder of a project setting a different value for QT_DISABLE_DEPRECATED_BEFORE target_compile_definitions(kddockwidgets PRIVATE QT_DISABLE_DEPRECATED_BEFORE=0x060000) - if (NOT OPTION_QTQUICK) # TODO: We can support it + if (NOT ${PROJECT_NAME}_QTQUICK) # TODO: We can support it add_executable(kddockwidgets_linter layoutlinter_main.cpp) target_link_libraries(kddockwidgets_linter kddockwidgets kddockwidgets_multisplitter Qt5::Widgets) endif() diff --git a/src/KDDockWidgetsConfig.cmake.in b/src/KDDockWidgetsConfig.cmake.in index 908412fa..246c5d02 100644 --- a/src/KDDockWidgetsConfig.cmake.in +++ b/src/KDDockWidgetsConfig.cmake.in @@ -12,7 +12,7 @@ include(CMakeFindDependencyMacro) find_dependency(Qt5Widgets REQUIRED) -if (@OPTION_QTQUICK@) +if (@KDDockWidgets_QTQUICK@) find_dependency(Qt5Quick REQUIRED) endif() diff --git a/src/private/multisplitter/CMakeLists.txt b/src/private/multisplitter/CMakeLists.txt index 1c87b495..9cd42be9 100644 --- a/src/private/multisplitter/CMakeLists.txt +++ b/src/private/multisplitter/CMakeLists.txt @@ -38,7 +38,7 @@ set(MULTISPLITTER_SRCS_QTQUICK ) option(BUILD_MULTISPLITTER_QTWIDGETS_FRONTEND "Build support for QtWidgets" ON) -if (OPTION_QTQUICK) +if (${PROJECT_NAME}_QTQUICK) # We're building the layouting engine as part of KDDW. If KDDW has set to build with QtQuick # then so does the layouting engine SET(BUILD_MULTISPLITTER_QTQUICK_FRONTEND ON) @@ -79,7 +79,7 @@ else() target_compile_definitions(kddockwidgets_multisplitter PRIVATE BUILDING_MULTISPLITTER_LIBRARY) endif() -if(OPTION_DEVELOPER_MODE) +if(${PROJECT_NAME}_DEVELOPER_MODE) # Under developer mode since kddw might be a sub-folder of a project setting a different value for QT_DISABLE_DEPRECATED_BEFORE target_compile_definitions(kddockwidgets_multisplitter PRIVATE QT_DISABLE_DEPRECATED_BEFORE=0x060000) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index decee4fb..ca53319d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -38,7 +38,7 @@ target_link_libraries(tst_common kddockwidgets kddockwidgets_multisplitter Qt5:: set_compiler_flags(tst_common) # tst_docks -if (NOT OPTION_QTQUICK) +if (NOT ${PROJECT_NAME}_QTQUICK) add_executable(tst_docks tst_docks.cpp ${TESTING_SRCS} ${TESTING_RESOURCES}) target_link_libraries(tst_docks kddockwidgets kddockwidgets_multisplitter Qt5::Widgets Qt5::Test) set_compiler_flags(tst_docks)