Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
windows:mingw:win64
mingw64-vsgQt5
0001-cmake-add-option-ENABLE_QT_SUFFIX-to-add-m...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-cmake-add-option-ENABLE_QT_SUFFIX-to-add-major-versi.patch of Package mingw64-vsgQt5
From d3043e761c474e61a1b370569f8fae67842e94e7 Mon Sep 17 00:00:00 2001 From: Ralf Habacker <ralf.habacker@freenet.de> Date: Tue, 16 Jan 2024 08:35:24 +0100 Subject: [PATCH] cmake: add option 'ENABLE_QT_SUFFIX' to add major version as suffix for creating files and binaries --- CMakeLists.txt | 18 +++++++-- cmake/vsgQtMacros.cmake | 57 ++++++++++++++++++++++++++++ examples/vsgqtmdi/CMakeLists.txt | 6 +++ examples/vsgqtviewer/CMakeLists.txt | 6 +++ examples/vsgqtwindows/CMakeLists.txt | 6 +++ src/vsgQt/CMakeLists.txt | 18 +++++++-- 6 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 cmake/vsgQtMacros.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index a49e426..d4ed89f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,9 @@ set(VSGQT_RELEASE_CANDIDATE 1) set(VSGQT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Root source directory of vsgQt") set(VSGQT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "Root binary directory of vsgQt") +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) +include(vsgQtMacros) + # set the use of C++17 globally as all examples require it set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -19,14 +22,23 @@ set(QT_PACKAGE_NAME Qt5 CACHE STRING "Set Qt package name, i.e. Qt5 or Qt6.") find_package(vsg 1.0.8) -vsg_setup_dir_vars() -vsg_setup_build_vars() - find_package(vsgXchange) # only used by examples # if Qt5 then we need 5.10 or later find_package(${QT_PACKAGE_NAME} COMPONENTS Widgets REQUIRED) +option(ENABLE_QT_SUFFIX "Add Qt major version to generated binaries" ON) +if(ENABLE_QT_SUFFIX) + set(VSGQT_PACKAGE_NAME vsg${QT_PACKAGE_NAME}) + set(VSGQT_PACKAGE_SUFFIX ${${QT_PACKAGE_NAME}_VERSION_MAJOR}) +else() + set(VSGQT_PACKAGE_NAME ${PROJECT_NAME}) + set(VSGQT_PACKAGE_SUFFIX) +endif() + +vsg_qt_setup_dir_vars(EXPORT_PREFIX ${VSGQT_PACKAGE_NAME}) +vsg_setup_build_vars() + vsg_add_target_clang_format( FILES include/*/*.h diff --git a/cmake/vsgQtMacros.cmake b/cmake/vsgQtMacros.cmake new file mode 100644 index 0000000..5f4dfb9 --- /dev/null +++ b/cmake/vsgQtMacros.cmake @@ -0,0 +1,57 @@ + +# +# create and install cmake support files +# +# available arguments: +# +# [EXPORT_PREFIX <prefix>] prefix for the export target name +# If not specified, ${PROJECT_NAME} is used +# +# @TODO: merge into vsg +macro(vsg_qt_setup_dir_vars) + set(options) + set(oneValueArgs EXPORT_PREFIX) + set(multiValueArgs) + cmake_parse_arguments(VQSDV "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + set(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin) + set(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib) + + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BINDIR}) + + include(GNUInstallDirs) + + if(VQSDV_EXPORT_PREFIX) + set(EXPORT_PREFIX ${VQSDV_EXPORT_PREFIX}) + else() + set(EXPORT_PREFIX ${PROJECT_NAME}) + endif() + + if(WIN32) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BINDIR}) + # set up local bin directory to place all binaries + make_directory(${OUTPUT_BINDIR}) + make_directory(${OUTPUT_LIBDIR}) + set(VSGQT_INSTALL_TARGETS_DEFAULT_FLAGS + EXPORT ${EXPORT_PREFIX}Targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + else() + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) + # set up local bin directory to place all binaries + make_directory(${OUTPUT_LIBDIR}) + set(VSGQT_INSTALL_TARGETS_DEFAULT_FLAGS + EXPORT ${EXPORT_PREFIX}Targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + endif() +endmacro() + + diff --git a/examples/vsgqtmdi/CMakeLists.txt b/examples/vsgqtmdi/CMakeLists.txt index 190f2fb..e1b7655 100644 --- a/examples/vsgqtmdi/CMakeLists.txt +++ b/examples/vsgqtmdi/CMakeLists.txt @@ -14,6 +14,12 @@ if (vsgXchange_FOUND) target_link_libraries(vsgqtmdi vsgXchange::vsgXchange) endif() +if(ENABLE_QT_SUFFIX) + set_target_properties(vsgqtmdi + PROPERTIES + OUTPUT_NAME vsgqtmdi${VSGQT_PACKAGE_SUFFIX} + ) +endif() install(TARGETS vsgqtmdi DESTINATION bin) diff --git a/examples/vsgqtviewer/CMakeLists.txt b/examples/vsgqtviewer/CMakeLists.txt index 129c326..6a5a19c 100644 --- a/examples/vsgqtviewer/CMakeLists.txt +++ b/examples/vsgqtviewer/CMakeLists.txt @@ -14,6 +14,12 @@ if (vsgXchange_FOUND) target_link_libraries(vsgqtviewer vsgXchange::vsgXchange) endif() +if(ENABLE_QT_SUFFIX) + set_target_properties(vsgqtviewer + PROPERTIES + OUTPUT_NAME vsgqtviewer${VSGQT_PACKAGE_SUFFIX} + ) +endif() install(TARGETS vsgqtviewer DESTINATION bin) diff --git a/examples/vsgqtwindows/CMakeLists.txt b/examples/vsgqtwindows/CMakeLists.txt index fa035d7..97f8cb1 100644 --- a/examples/vsgqtwindows/CMakeLists.txt +++ b/examples/vsgqtwindows/CMakeLists.txt @@ -14,6 +14,12 @@ if (vsgXchange_FOUND) target_link_libraries(vsgqtwindows vsgXchange::vsgXchange) endif() +if(ENABLE_QT_SUFFIX) + set_target_properties(vsgqtwindows + PROPERTIES + OUTPUT_NAME vsgqtwindows${VSGQT_PACKAGE_SUFFIX} + ) +endif() install(TARGETS vsgqtwindows DESTINATION bin) diff --git a/src/vsgQt/CMakeLists.txt b/src/vsgQt/CMakeLists.txt index e0c3ef1..6ba6e32 100644 --- a/src/vsgQt/CMakeLists.txt +++ b/src/vsgQt/CMakeLists.txt @@ -60,6 +60,13 @@ set_target_properties(vsgQt CXX_STANDARD 17 ) +if(ENABLE_QT_SUFFIX) + set_target_properties(vsgQt + PROPERTIES + OUTPUT_NAME ${VSGQT_PACKAGE_NAME} + ) +endif() + target_include_directories(vsgQt PUBLIC $<BUILD_INTERFACE:${VSGQT_SOURCE_DIR}/include> @@ -74,10 +81,15 @@ target_link_libraries(vsgQt add_library_export_header(vsgQt) -install(TARGETS vsgQt ${INSTALL_TARGETS_DEFAULT_FLAGS}) -install(DIRECTORY ${VSGQT_SOURCE_DIR}/include/vsgQt DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(TARGETS vsgQt ${VSGQT_INSTALL_TARGETS_DEFAULT_FLAGS}) +install( + DIRECTORY ${VSGQT_SOURCE_DIR}/include/vsgQt + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${VSGQT_PACKAGE_NAME} + PATTERN "vsgQt/*" +) -file(WRITE ${VSGQT_BINARY_DIR}/vsgQtConfig.cmake.in "#generated by cmake, do not change\ninclude(\${CMAKE_CURRENT_LIST_DIR}/vsgQtTargets.cmake)\n") +file(WRITE ${VSGQT_BINARY_DIR}/vsgQtConfig.cmake.in "#generated by cmake, do not change\ninclude(\${CMAKE_CURRENT_LIST_DIR}/${VSGQT_PACKAGE_NAME}Targets.cmake)\n") vsg_add_cmake_support_files( CONFIG_TEMPLATE ${VSGQT_BINARY_DIR}/vsgQtConfig.cmake.in + PREFIX ${VSGQT_PACKAGE_NAME} ) -- 2.43.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor