Sine Striker
2023-12-17 5e12d4d4f27e4ce27a8c9e6145bc6e45840e00f2
Add qmake and msbuild config files
3个文件已修改
6个文件已添加
2个文件已删除
213 ■■■■■ 已修改文件
README.md 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/install.cmake 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/msbuild/.gitkeep 补丁 | 查看 | 原始文档 | blame | 历史
share/msbuild/QWindowKit.props.in 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/qmake/.gitkeep 补丁 | 查看 | 原始文档 | blame | 历史
share/qmake/QWKCore.pri.in 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/qmake/QWKQuick.pri.in 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/qmake/QWKStyleSupport.pri.in 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
share/qmake/QWKWidgets.pri.in 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/CMakeLists.txt 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickwindowagent_win.cpp 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -32,6 +32,50 @@
+ [qmsetup](https://github.com/stdware/qmsetup)
## Integrate
### Build & Install
```sh
cmake -B build \
  -Dqmsetup_DIR=<dir> \ # Optional
  -DCMAKE_INSTALL_PREFIX=/path/install \
  -G "Ninja Multi-Config"
cmake --build build --target install --config Debug
cmake --build build --target install --config Release
```
You can also include this directory as a sub-project if you choose CMake as your build system.
For other build systems, you need to install with CMake first and include the corresponding configuration files in your project.
### Import
#### CMake Project
```cmake
cmake -B build -DQWindowKit_DIR=/path/install/cmake/QWindowKit
```
```cmake
find_package(QWindowKit REQUIRED)
taraget_link_libraries(widgets_app PUBLIC QWindowKit::Widgets)
taraget_link_libraries(quick_app PUBLIC QWindowKit::Quick)
```
#### QMake Project
```qmake
# WidgetsApp.pro
include("/path/install/share/QWindowKit/qmake/QWKWidgets.pri")
# QuickApp.pro
include("/path/install/share/QWindowKit/qmake/QWKQuick.pri")
```
#### Visual Studio Project
TODO
## Quick Start
### Initialization
@@ -41,7 +85,7 @@
```c++
int main(int argc, char *argv[]) {
#ifdef Q_OS_WINDOWS
    qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
    QCoreApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
#elif defined(Q_OS_MAC)
# if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    qputenv("QT_MAC_WANTS_LAYER", "1");
share/install.cmake
New file
@@ -0,0 +1,86 @@
set(_build_data_dir ${CMAKE_CURRENT_BINARY_DIR}/../etc/share)
# Install qmake files
if(TRUE)
    set(_qmake_install_dir "${CMAKE_INSTALL_DATADIR}/QWindowKit/qmake")
    set(_qmake_build_dir ${_build_data_dir}/${_qmake_install_dir})
    file(RELATIVE_PATH _qmake_install_prefix
        "${CMAKE_INSTALL_PREFIX}/${_qmake_install_dir}"
        "${CMAKE_INSTALL_PREFIX}"
    )
    string(REGEX REPLACE "/$" "" _qmake_install_prefix "${_qmake_install_prefix}")
    set(QMAKE_QWK_INSTALL_PREFIX "\$\$PWD/${_qmake_install_prefix}")
    set(QMAKE_QWK_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
    set(QMAKE_QWK_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
    set(QMAKE_QWK_INSTALL_INCDIR ${CMAKE_INSTALL_INCLUDEDIR})
    set(QMAKE_QWK_CORE_NAME_RELEASE QWKCore)
    set(QMAKE_QWK_WIDGETS_NAME_RELEASE QWKWidgets)
    set(QMAKE_QWK_QUICK_NAME_RELEASE QWKQuick)
    set(QMAKE_QWK_STYLESUPPORT_NAME_RELEASE QWKStyleSupport)
    set(QMAKE_QWK_CORE_NAME_DEBUG QWKCore${CMAKE_DEBUG_POSTFIX})
    set(QMAKE_QWK_WIDGETS_NAME_DEBUG QWKWidgets${CMAKE_DEBUG_POSTFIX})
    set(QMAKE_QWK_QUICK_NAME_DEBUG QWKQuick${CMAKE_DEBUG_POSTFIX})
    set(QMAKE_QWK_STYLESUPPORT_NAME_DEBUG QWKStyleSupport${CMAKE_DEBUG_POSTFIX})
    file(GLOB _qmake_components "${CMAKE_CURRENT_LIST_DIR}/qmake/*.pri.in")
    foreach(_item IN LISTS _qmake_components)
        get_filename_component(_name ${_item} NAME_WLE)
        configure_file(${_item} ${_build_data_dir}/qmake/${_name} @ONLY)
    endforeach()
    install(DIRECTORY ${_build_data_dir}/qmake/
        DESTINATION ${_qmake_install_dir}
    )
endif()
# Install msbuild files
if(MSVC)
    macro(to_dos_separator _var)
        string(REPLACE "/" "\\" ${_var} ${${_var}})
    endmacro()
    set(_msbuild_install_dir "${CMAKE_INSTALL_DATADIR}/QWindowKit/msbuild")
    set(_msbuild_build_dir ${_build_data_dir}/${_msbuild_install_dir})
    file(RELATIVE_PATH _msbuild_install_prefix
        "${CMAKE_INSTALL_PREFIX}/${_msbuild_install_dir}"
        "${CMAKE_INSTALL_PREFIX}"
    )
    string(REGEX REPLACE "/$" "" _msbuild_install_prefix "${_msbuild_install_prefix}")
    set(MSBUILD_QWK_INSTALL_PREFIX "\$(MSBuildThisFileDirectory)${_msbuild_install_prefix}")
    set(MSBUILD_QWK_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
    set(MSBUILD_QWK_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
    set(MSBUILD_QWK_INSTALL_INCDIR ${CMAKE_INSTALL_INCLUDEDIR})
    set(MSBUILD_QWK_LIBRARY_LIST_DEBUG
        QWKCore${CMAKE_DEBUG_POSTFIX}.lib
        QWKWidgets${CMAKE_DEBUG_POSTFIX}.lib
        QWKQuick${CMAKE_DEBUG_POSTFIX}.lib
        QWKStyleSupport${CMAKE_DEBUG_POSTFIX}.lib
    )
    set(MSBUILD_QWK_LIBRARY_LIST_RELEASE
        QWKCore.lib
        QWKWidgets.lib
        QWKQuick.lib
        QWKStyleSupport.lib
    )
    to_dos_separator(MSBUILD_QWK_INSTALL_PREFIX)
    to_dos_separator(MSBUILD_QWK_INSTALL_BINDIR)
    to_dos_separator(MSBUILD_QWK_INSTALL_LIBDIR)
    to_dos_separator(MSBUILD_QWK_INSTALL_INCDIR)
    configure_file(${CMAKE_CURRENT_LIST_DIR}/msbuild/QWindowKit.props.in
        ${_build_data_dir}/msbuild/QWindowKit.props
        @ONLY
    )
    install(DIRECTORY ${_build_data_dir}/msbuild/
        DESTINATION ${_msbuild_install_dir}
    )
endif()
share/msbuild/.gitkeep
share/msbuild/QWindowKit.props.in
New file
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LibraryPath>@MSBUILD_QWK_INSTALL_PREFIX@\@MSBUILD_QWK_INSTALL_LIBDIR@;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <PropertyGroup Label="QtSettings">
    <QtHeaderSearchPath>@MSBUILD_QWK_INSTALL_PREFIX@\@MSBUILD_QWK_INSTALL_INCDIR@;$(QtHeaderSearchPath)</QtHeaderSearchPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <Link>
      <AdditionalDependencies Condition="'$(Configuration)'=='Debug'">@MSBUILD_QWK_LIBRARY_LIST_DEBUG@;%(AdditionalDependencies);</AdditionalDependencies>
      <AdditionalDependencies Condition="'$(Configuration)'=='Release'">@MSBUILD_QWK_LIBRARY_LIST_RELEASE@;%(AdditionalDependencies);</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>
share/qmake/.gitkeep
share/qmake/QWKCore.pri.in
New file
@@ -0,0 +1,23 @@
!defined(QMAKE_QWK_CORE_INCLUDED, var) {
    QMAKE_QWK_CORE_INCLUDED = 1
    # CMake variables
    QMAKE_QWK_INSTALL_PREFIX = @QMAKE_QWK_INSTALL_PREFIX@
    QMAKE_QWK_INSTALL_BINDIR = @QMAKE_QWK_INSTALL_BINDIR@
    QMAKE_QWK_INSTALL_LIBDIR = @QMAKE_QWK_INSTALL_LIBDIR@
    QMAKE_QWK_INSTALL_INCDIR = @QMAKE_QWK_INSTALL_INCDIR@
    # Shared include directory
    INCLUDEPATH += \
        $$QMAKE_QWK_INSTALL_PREFIX/$$QMAKE_QWK_INSTALL_INCDIR/QWindowKit
    # Shared link directory
    LIBS += \
        "-L$$QMAKE_QWK_INSTALL_PREFIX/$$QMAKE_QWK_INSTALL_LIBDIR"
    CONFIG(debug, debug|release) {
        LIBS += -l@QMAKE_QWK_CORE_NAME_DEBUG@
    } else {
        LIBS += -l@QMAKE_QWK_CORE_NAME_RELEASE@
    }
}
share/qmake/QWKQuick.pri.in
New file
@@ -0,0 +1,11 @@
!defined(QMAKE_QWK_QUICK_INCLUDED, var) {
    QMAKE_QWK_QUICK_INCLUDED = 1
    include($$PWD/QWKCore.pri)
    CONFIG(debug, debug|release) {
        LIBS += -l@QMAKE_QWK_QUICK_NAME_DEBUG@
    } else {
        LIBS += -l@QMAKE_QWK_QUICK_NAME_RELEASE@
    }
}
share/qmake/QWKStyleSupport.pri.in
New file
@@ -0,0 +1,11 @@
!defined(QMAKE_QWK_STYLESUPPORT_INCLUDED, var) {
    QMAKE_QWK_STYLESUPPORT_INCLUDED = 1
    include($$PWD/QWKCore.pri)
    CONFIG(debug, debug|release) {
        LIBS += -l@QMAKE_QWK_STYLESUPPORT_NAME_DEBUG@
    } else {
        LIBS += -l@QMAKE_QWK_STYLESUPPORT_NAME_RELEASE@
    }
}
share/qmake/QWKWidgets.pri.in
New file
@@ -0,0 +1,11 @@
!defined(QMAKE_QWK_WIDGETS_INCLUDED, var) {
    QMAKE_QWK_WIDGETS_INCLUDED = 1
    include($$PWD/QWKCore.pri)
    CONFIG(debug, debug|release) {
        LIBS += -l@QMAKE_QWK_WIDGETS_NAME_DEBUG@
    } else {
        LIBS += -l@QMAKE_QWK_WIDGETS_NAME_RELEASE@
    }
}
src/CMakeLists.txt
@@ -208,7 +208,5 @@
    )
    # Install shared files
    install(DIRECTORY ../share/
        DESTINATION share/${QWINDOWKIT_INSTALL_NAME}
    )
    include("../share/install.cmake")
endif()
src/quick/quickwindowagent_win.cpp
@@ -8,7 +8,6 @@
namespace QWK {
    class BorderItem : public QQuickPaintedItem, public NativeEventFilter {
        Q_OBJECT
    public:
        explicit BorderItem(QQuickItem *parent, AbstractWindowContext *context);
        ~BorderItem() override;
@@ -120,5 +119,3 @@
    }
}
#include "quickwindowagent_win.moc"