为 Visual Studio 从源代码静态构建 Qt

问题描述 投票:0回答:1

我尝试了数百次从源代码构建 Qt 进行静态链接,并阅读了许多 Stack Overflow 问题,但它们都不适合我。

如何获取静态库并使用它在 Visual Studio 中构建应用程序 是通过下载预构建的还是从源代码构建? 我被错误淹没了。

我的环境

  • 带有 Qt 工具插件的 Visual Studio 2022
  • Windows 10 22H2
  • Python 3.11.4
  • Perl
  • Cmake 3.28.0-rc5
  • 忍者版本1.11.1

编辑:

我使用 Visual Studio 2022 的 x64 本机工具并将 pwd 更改为 Src 目录。 然后执行这个命令:

.\configure -release -static -opensource -confirm-license -prefix G:\Libraries\C++\Qt\6.6.1\Static-Build

然后我收到此错误,表明存在某种正则表达式问题:

CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/3rdparty/zlib(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/3rdparty/zlib/CMakeLists.txt:DEFERRED


CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/corelib(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/corelib/CMakeLists.txt:DEFERRED


CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/3rdparty/libpng(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/3rdparty/libpng/CMakeLists.txt:DEFERRED


CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/3rdparty/libjpeg(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/3rdparty/libjpeg/CMakeLists.txt:DEFERRED


CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/3rdparty/freetype(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/3rdparty/freetype/CMakeLists.txt:DEFERRED


CMake Error at qtbase/cmake/QtSyncQtHelpers.cmake:144 (list):
  list sub-command FILTER, mode REGEX failed to compile regex
  "(.+/(ui_)[^/]+\.h|G:/Libraries/C++/Qt/6.6.1/Src/qtbase/src/3rdparty/harfbuzz-ng(/.+)?/doc/+\.h)".
Call Stack (most recent call first):
  qtbase/cmake/QtModuleHelpers.cmake:901 (qt_internal_target_sync_headers)
  qtbase/cmake/QtScopeFinalizerHelpers.cmake:24:EVAL:1 (qt_finalize_module)
  qtbase/src/3rdparty/harfbuzz-ng/CMakeLists.txt:DEFERRED

错误远不止这个,但我认为其他软件包也重复了同样的错误

有什么帮助吗?

c++ static-libraries static-linking qt6
1个回答
0
投票

我找出了这个错误的原因并修复了它 主要原因是 Src 目录的路径包含一些字符,在我的例子中是来自单词 C++(+),这使得一些正则表达式不起作用。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.