diff --git a/.gitignore b/.gitignore index 2a7ed562d..12db783b9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ Makefile *.dll *.a build* +ads_version.h # IDEs .idea diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cd9d08c7..d36f9c3e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,39 +4,10 @@ if (POLICY CMP0091) cmake_policy(SET CMP0091 NEW) endif (POLICY CMP0091) -# Add cmake modules path (required for Versioning.cmake and git revision description) +# Add cmake modules path (required for Versioning.cmake) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH}) -# By default, the version information is extracted from the git index. However, -# we can override this behavior by explicitly setting ADS_VERSION and -# skipping the git checks. This is useful for cases where this project is being -# used independently of its original git repo (e.g. vendored in another project) -if(NOT ADS_VERSION) - include(GetGitRevisionDescription) - git_describe(GitTagVersion --tags) - string(REGEX REPLACE "^([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GitTagVersion}") - string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GitTagVersion}") - string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GitTagVersion}") - set(VERSION_SHORT "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") - set(VERSION_SONAME "${VERSION_MAJOR}") -else() - string(REGEX MATCHALL "[\.]" VERSION_DOT_MATCHES ${ADS_VERSION}) - list(LENGTH VERSION_DOT_MATCHES VERSION_DOT_COUNT) - if(VERSION_DOT_COUNT EQUAL 2) - set(VERSION_SHORT ${ADS_VERSION}) - string(REGEX REPLACE "^([0-9]+)\\..*" "\\1" VERSION_SONAME "${ADS_VERSION}") - # Set PROJECT_VERSION_* variables for Versioning.cmake - string(REGEX MATCHALL "[0-9]+" VERSION_PARTS "${ADS_VERSION}") - list(GET VERSION_PARTS 0 PROJECT_VERSION_MAJOR) - list(GET VERSION_PARTS 1 PROJECT_VERSION_MINOR) - list(GET VERSION_PARTS 2 PROJECT_VERSION_PATCH) - else() - message(FATAL_ERROR "ADS_VERSION must be in major.minor.patch format, e.g. 3.8.1. Got ${ADS_VERSION}") - endif() -endif() - - -project(QtADS LANGUAGES CXX VERSION ${VERSION_SHORT}) +project(QtADS LANGUAGES CXX VERSION 5.0.0) option(BUILD_STATIC "Build the static library" OFF) option(BUILD_EXAMPLES "Build the examples" ON) diff --git a/cmake/modules/FileVersionInfo.rc.in b/cmake/modules/FileVersionInfo.rc.in index 812b1ae92..7067f9055 100644 --- a/cmake/modules/FileVersionInfo.rc.in +++ b/cmake/modules/FileVersionInfo.rc.in @@ -13,12 +13,11 @@ BEGIN BEGIN BLOCK "040904b0" BEGIN - VALUE "CompanyName", "My Company\0" + VALUE "CompanyName", "N/A\0" + VALUE "ProductName", "@PROJECT_NAME@\0" VALUE "FileDescription", "@PROJECT_NAME@\0" - VALUE "FileVersion", "@PROJECT_VERSION_STRING@\0" - VALUE "ProductVersion", "@PROJECT_VERSION_STRING@\0" - VALUE "GitCommitFull", "@PROJECT_GIT_HASH@\0" - VALUE "GitCommitShort", "@PROJECT_GIT_HASH_SHORT@\0" + VALUE "FileVersion", "@PROJECT_VERSION@\0" + VALUE "ProductVersion", "@PROJECT_VERSION@\0" END END diff --git a/cmake/modules/GetGitRevisionDescription.cmake b/cmake/modules/GetGitRevisionDescription.cmake deleted file mode 100644 index a9ad77b7f..000000000 --- a/cmake/modules/GetGitRevisionDescription.cmake +++ /dev/null @@ -1,172 +0,0 @@ -# - Returns a version string from Git -# -# These functions force a re-configure on each git commit so that you can -# trust the values of the variables in your build system. -# -# get_git_head_revision( [ ...]) -# -# Returns the refspec and sha hash of the current head revision -# -# git_describe( [ ...]) -# -# Returns the results of git describe on the source tree, and adjusting -# the output so that it tests false if an error occurs. -# -# git_get_exact_tag( [ ...]) -# -# Returns the results of git describe --exact-match on the source tree, -# and adjusting the output so that it tests false if there was no exact -# matching tag. -# -# git_local_changes() -# -# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes. -# Uses the return code of "git diff-index --quiet HEAD --". -# Does not regard untracked files. -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -if(__get_git_revision_description) - return() -endif() -set(__get_git_revision_description YES) - -# We must run the following at "include" time, not at function call time, -# to find the path to this module rather than the path to a calling list file -get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) - -function(get_git_head_revision _refspecvar _hashvar) - set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories - set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") - get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) - if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) - # We have reached the root directory, we are not in git - set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - return() - endif() - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - endwhile() - # check if this is a submodule - if(NOT IS_DIRECTORY ${GIT_DIR}) - file(READ ${GIT_DIR} submodule) - string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) - get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) - get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) - endif() - if(NOT IS_DIRECTORY "${GIT_DIR}") - file(READ ${GIT_DIR} worktree) - string(REGEX REPLACE "gitdir: (.*)worktrees(.*)\n$" "\\1" GIT_DIR ${worktree}) - endif() - set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") - if(NOT EXISTS "${GIT_DATA}") - file(MAKE_DIRECTORY "${GIT_DATA}") - endif() - - if(NOT EXISTS "${GIT_DIR}/HEAD") - return() - endif() - set(HEAD_FILE "${GIT_DATA}/HEAD") - configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) - - configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" - "${GIT_DATA}/grabRef.cmake" - @ONLY) - include("${GIT_DATA}/grabRef.cmake") - - set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) - set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) -endfunction() - -function(git_describe _var) - if(NOT GIT_FOUND) - find_package(Git QUIET) - endif() - get_git_head_revision(refspec hash) - if(NOT GIT_FOUND) - set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) - return() - endif() - if(NOT hash) - set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) - return() - endif() - - # TODO sanitize - #if((${ARGN}" MATCHES "&&") OR - # (ARGN MATCHES "||") OR - # (ARGN MATCHES "\\;")) - # message("Please report the following error to the project!") - # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") - #endif() - - #message(STATUS "Arguments to execute_process: ${ARGN}") - - execute_process(COMMAND - "${GIT_EXECUTABLE}" - describe - ${hash} - ${ARGN} - WORKING_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}" - RESULT_VARIABLE - res - OUTPUT_VARIABLE - out - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT res EQUAL 0) - set(out "${out}-${res}-NOTFOUND") - endif() - - set(${_var} "${out}" PARENT_SCOPE) -endfunction() - -function(git_get_exact_tag _var) - git_describe(out --exact-match ${ARGN}) - set(${_var} "${out}" PARENT_SCOPE) -endfunction() - -function(git_local_changes _var) - if(NOT GIT_FOUND) - find_package(Git QUIET) - endif() - get_git_head_revision(refspec hash) - if(NOT GIT_FOUND) - set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) - return() - endif() - if(NOT hash) - set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) - return() - endif() - - execute_process(COMMAND - "${GIT_EXECUTABLE}" - diff-index --quiet HEAD -- - WORKING_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}" - RESULT_VARIABLE - res - OUTPUT_VARIABLE - out - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(res EQUAL 0) - set(${_var} "CLEAN" PARENT_SCOPE) - else() - set(${_var} "DIRTY" PARENT_SCOPE) - endif() -endfunction() diff --git a/cmake/modules/GetGitRevisionDescription.cmake.in b/cmake/modules/GetGitRevisionDescription.cmake.in deleted file mode 100644 index 6d8b708ef..000000000 --- a/cmake/modules/GetGitRevisionDescription.cmake.in +++ /dev/null @@ -1,41 +0,0 @@ -# -# Internal file for GetGitRevisionDescription.cmake -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -set(HEAD_HASH) - -file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) - -string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) -if(HEAD_CONTENTS MATCHES "ref") - # named branch - string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") - if(EXISTS "@GIT_DIR@/${HEAD_REF}") - configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) - else() - configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) - file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) - if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") - set(HEAD_HASH "${CMAKE_MATCH_1}") - endif() - endif() -else() - # detached HEAD - configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) -endif() - -if(NOT HEAD_HASH) - file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) - string(STRIP "${HEAD_HASH}" HEAD_HASH) -endif() diff --git a/cmake/modules/Versioning.cmake b/cmake/modules/Versioning.cmake index 282828d9d..89d28ae17 100644 --- a/cmake/modules/Versioning.cmake +++ b/cmake/modules/Versioning.cmake @@ -8,58 +8,32 @@ set(_VERSIONING_MODULE_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "Versioning module directory") # ------------------------------------------------------------ -# Extract version information from Git or use predefined version +# Function: Generates the required version header for the ADS +# library. Should only be called by the ADS library target. # ------------------------------------------------------------ -if(NOT DEFINED PROJECT_VERSION_MAJOR OR NOT DEFINED PROJECT_VERSION_MINOR OR NOT DEFINED PROJECT_VERSION_PATCH) - # Get tag (expected: v1.2.3 or 1.2.3 or 1.2.3-12-gHASH) - execute_process( - COMMAND git describe --tags --dirty - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE GIT_DESC_RAW - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - # Remove leading "v" if present - string(REGEX REPLACE "^v" "" GIT_DESC "${GIT_DESC_RAW}") - - # Extract major.minor.patch - string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" _ "${GIT_DESC}") - set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}") - set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}") - set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}") - - - - # Commit hash (full + short) - execute_process( - COMMAND git rev-parse HEAD - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE PROJECT_GIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - execute_process( - COMMAND git rev-parse --short HEAD - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE PROJECT_GIT_HASH_SHORT - OUTPUT_STRIP_TRAILING_WHITESPACE - ) -endif() - -set(PROJECT_VERSION_STRING - "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" -) - -# Export variables to parent scope -set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE) -set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE) -set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE) -set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}" PARENT_SCOPE) -set(PROJECT_GIT_HASH "${PROJECT_GIT_HASH}" PARENT_SCOPE) -set(PROJECT_GIT_HASH_SHORT "${PROJECT_GIT_HASH_SHORT}" PARENT_SCOPE) +function(generate_ads_version_header) + # configure ads_version.h from ads_version.h.in + if(NOT DEFINED QtADS_VERSION_MAJOR OR + NOT DEFINED QtADS_VERSION_MINOR OR + NOT DEFINED QtADS_VERSION_PATCH) + message( + FATAL_ERROR + "ADS major, minor, or patch version variables not defined!") + endif() -# Public variable for users -set(PROJECT_AUTO_VERSION "${PROJECT_VERSION_STRING}" PARENT_SCOPE) + string(TIMESTAMP QtADS_AUTO_GEN_DATE "%d.%m.%Y") + + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ads_globals.h") + message( + FATAL_ERROR + "Unable to place ads_version.h next to ads_globals.h") + else() + configure_file( + "${_VERSIONING_MODULE_DIR}/ads_version.h.in" + "${CMAKE_CURRENT_SOURCE_DIR}/ads_version.h" + @ONLY) + endif() +endfunction() # ------------------------------------------------------------ # Reusable function: Attach Windows version resources to target diff --git a/cmake/modules/ads_version.h.in b/cmake/modules/ads_version.h.in new file mode 100644 index 000000000..0d5367786 --- /dev/null +++ b/cmake/modules/ads_version.h.in @@ -0,0 +1,40 @@ +#ifndef ads_versionH +#define ads_versionH +/******************************************************************************* +** Qt Advanced Docking System +** Copyright (C) 2026 Uwe Kindler +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; If not, see . +******************************************************************************/ + +//============================================================================ +/// \file ads_version.h +/// \author auto-generated +/// \date @QtADS_AUTO_GEN_DATE@ +/// \brief ADS version information +//============================================================================ + +// ADS version components +#define ADS_VERSION_MAJOR @QtADS_VERSION_MAJOR@ +#define ADS_VERSION_MINOR @QtADS_VERSION_MINOR@ +#define ADS_VERSION_PATCH @QtADS_VERSION_PATCH@ + +// ADS_VERSION is (major << 16) | (minor << 8) | patch. +#define ADS_VERSION ADS_VERSION_CHECK(ADS_VERSION_MAJOR, ADS_VERSION_MINOR, ADS_VERSION_PATCH) + +// generates a complete version from the major, minor, and patch values +// i.e. #if ADS_VERSION >= ADS_VERSION_CHECK(5, 0, 0) +#define ADS_VERSION_CHECK(major, minor, patch) ((major<<16) | (minor<<8) | (patch)) + +#endif // ads_versionH diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 792d49a58..116b7157f 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_demo VERSION ${VERSION_SHORT}) +project(ads_demo VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets Quick QuickWidgets REQUIRED) @@ -35,7 +35,7 @@ set_target_properties(AdvancedDockingSystemDemo PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Demo" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 594550857..8a1129f6e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(QtADSExamples LANGUAGES CXX VERSION ${VERSION_SHORT}) +project(QtADSExamples LANGUAGES CXX VERSION ${QtADS_VERSION}) add_subdirectory(simple) add_subdirectory(hideshow) add_subdirectory(sidebar) diff --git a/examples/autohide/CMakeLists.txt b/examples/autohide/CMakeLists.txt index 7ad8b5005..99ba33bce 100644 --- a/examples/autohide/CMakeLists.txt +++ b/examples/autohide/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_autohide VERSION ${VERSION_SHORT}) +project(ads_example_autohide VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(AutoHideExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Auto Hide Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/autohidedragndrop/CMakeLists.txt b/examples/autohidedragndrop/CMakeLists.txt index 376b7b453..2d0bcdb2e 100644 --- a/examples/autohidedragndrop/CMakeLists.txt +++ b/examples/autohidedragndrop/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_autohide_dragndrop VERSION ${VERSION_SHORT}) +project(ads_example_autohide_dragndrop VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -21,7 +21,7 @@ set_target_properties(AutoHideDragNDropExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Auto Hide With Drag N Drop Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/centralwidget/CMakeLists.txt b/examples/centralwidget/CMakeLists.txt index 5bcfad2f0..a74d10679 100644 --- a/examples/centralwidget/CMakeLists.txt +++ b/examples/centralwidget/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_centralwidget VERSION ${VERSION_SHORT}) +project(ads_example_centralwidget VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(CentralWidgetExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Central Widget Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/configflags/CMakeLists.txt b/examples/configflags/CMakeLists.txt index 4c8a16798..243724920 100644 --- a/examples/configflags/CMakeLists.txt +++ b/examples/configflags/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_configflags VERSION ${VERSION_SHORT}) +project(ads_example_configflags VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(ConfigFlagsExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Config Flags" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/deleteonclose/CMakeLists.txt b/examples/deleteonclose/CMakeLists.txt index b711aff3f..c7f6bec9a 100644 --- a/examples/deleteonclose/CMakeLists.txt +++ b/examples/deleteonclose/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_deleteonclose VERSION ${VERSION_SHORT}) +project(ads_example_deleteonclose VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -16,7 +16,7 @@ set_target_properties(DeleteOnCloseTest PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Delete on Close Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/dockindock/CMakeLists.txt b/examples/dockindock/CMakeLists.txt index 158150fee..eccbbc81b 100644 --- a/examples/dockindock/CMakeLists.txt +++ b/examples/dockindock/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_dockindock VERSION ${VERSION_SHORT}) +project(ads_example_dockindock VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -23,7 +23,7 @@ set_target_properties(DockInDockExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Simple Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/emptydockarea/CMakeLists.txt b/examples/emptydockarea/CMakeLists.txt index 7680c6661..2ebafc865 100644 --- a/examples/emptydockarea/CMakeLists.txt +++ b/examples/emptydockarea/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_centralwidget VERSION ${VERSION_SHORT}) +project(ads_example_centralwidget VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(EmptyDockAreaExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Empty Dock Area Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/hideshow/CMakeLists.txt b/examples/hideshow/CMakeLists.txt index 576ace9b2..86d6292a7 100644 --- a/examples/hideshow/CMakeLists.txt +++ b/examples/hideshow/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_hideshow VERSION ${VERSION_SHORT}) +project(ads_example_hideshow VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(HideShowExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Hide,Show Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/sidebar/CMakeLists.txt b/examples/sidebar/CMakeLists.txt index 607c366fb..1d895a7c3 100644 --- a/examples/sidebar/CMakeLists.txt +++ b/examples/sidebar/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_sidebar VERSION ${VERSION_SHORT}) +project(ads_example_sidebar VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(SidebarExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Sidebar Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/examples/simple/CMakeLists.txt b/examples/simple/CMakeLists.txt index 066cd937a..d020ee336 100644 --- a/examples/simple/CMakeLists.txt +++ b/examples/simple/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(ads_example_simple VERSION ${VERSION_SHORT}) +project(ads_example_simple VERSION ${QtADS_VERSION}) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -20,7 +20,7 @@ set_target_properties(SimpleExample PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} EXPORT_NAME "Qt Advanced Docking System Simple Example" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3f8193d26..2a85a0abe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(QtAdvancedDockingSystem LANGUAGES CXX VERSION ${VERSION_SHORT}) +project(QtAdvancedDockingSystem LANGUAGES CXX VERSION ${QtADS_VERSION}) include(GNUInstallDirs) include(Versioning) if (${QT_VERSION_MAJOR}) @@ -19,6 +19,8 @@ if (UNIX AND NOT APPLE AND ((QT_VERSION_MAJOR STREQUAL "6" AND QT_VERSION_MINOR include_directories(${Qt${QT_VERSION_MAJOR}Gui_PRIVATE_INCLUDE_DIRS}) endif() +generate_ads_version_header() + set(CMAKE_INCLUDE_CURRENT_DIR ON) if(BUILD_STATIC) set(CMAKE_STATIC_LIBRARY_SUFFIX "_static${CMAKE_STATIC_LIBRARY_SUFFIX}") @@ -50,6 +52,7 @@ set(ads_SRCS ) set(ads_HEADERS ads_globals.h + ads_version.h DockAreaTabBar.h DockAreaTitleBar.h DockAreaTitleBar_p.h @@ -115,8 +118,8 @@ set_target_properties(${library_name} PROPERTIES AUTOMOC ON AUTORCC ON CXX_EXTENSIONS OFF - VERSION ${VERSION_SHORT} - SOVERSION ${VERSION_SONAME} + VERSION ${QtADS_VERSION} + SOVERSION ${QtADS_VERSION_MAJOR} EXPORT_NAME ${library_name} DEBUG_POSTFIX "d" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" @@ -136,7 +139,7 @@ endif() include(CMakePackageConfigHelpers) write_basic_package_version_file( "${library_name}ConfigVersion.cmake" - VERSION ${VERSION_SHORT} + VERSION ${QtADS_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${ads_HEADERS} diff --git a/src/ads_globals.h b/src/ads_globals.h index 42150912c..87f2ee229 100644 --- a/src/ads_globals.h +++ b/src/ads_globals.h @@ -30,6 +30,8 @@ //============================================================================ // INCLUDES //============================================================================ +#include "ads_version.h" + #include #include #include