我尝试了数百次从源代码构建 Qt 进行静态链接,并阅读了许多 Stack Overflow 问题,但它们都不适合我。
如何获取静态库并使用它在 Visual Studio 中构建应用程序 是通过下载预构建的还是从源代码构建? 我被错误淹没了。
我使用 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
错误远不止这个,但我认为其他软件包也重复了同样的错误
有什么帮助吗?
我找出了这个错误的原因并修复了它 主要原因是 Src 目录的路径包含一些字符,在我的例子中是来自单词 C++ 的 (+),这使得一些正则表达式不起作用。