Обратите внимание, что -std = c ++ 17 была добавлена система сборки за моей спиной. И действительно, если я снова запускаю команду компиляции, удаляя -std = c ++ 17 , она компилируется без проблемы.
Кто -нибудь имеет подсказку, почему дополнительный -std = c ++ 17 добавляется система сборки и как это предотвратить?
Я пытаюсь построить QT 6.8.2 с G ++ 15 и Std Standard C ++ 23. Это моя команда конфигурации: < /p> [code]$ export GCC_CC=/usr/bin/gcc-15 \ GCC_CXX=/usr/bin/g++-15 \ GCC_CFLAGS="-O2 -fPIC" \ GCC_CXXFLAGS="-O2 -fPIC -std=c++23" \ GCC_LDFLAGS=""
$ CC=${GCC_CC} \ CXX=${GCC_CXX} \ CFLAGS="${GCC_CCFLAGS}" \ CXXFLAGS="-O2 -fPIC -fcommon ${GCC_CXXFLAGS}" \ LDFLAGS=${GCC_LDFLAGS} \ /build/deps_sources/qt-everywhere-src-6.8.2/configure FEATURE_clang=OFF -release -opensource -confirm-license \ -prefix "/build/deps/qt6" \ -skip qtwebengine \ -skip qtimageformats \ -skip qtimageformats \ -skip qtquicktimeline \ -skip qtquick3d \ -skip qtmultimedia \ -skip qt5compat \ -skip qtactiveqt \ -skip qtcharts \ -skip qtcoap \ -skip qtdatavis3d \ -skip qtgraphs \ -skip qtserialport \ -skip qtpositioning \ -skip qtlocation \ -skip qtdoc \ -skip qtgrpc \ -skip qtlottie \ -skip qtopcua \ -skip qtquick3dphysics \ -skip qtquickeffectmaker \ -skip qtremoteobjects \ -skip qtscxml \ -skip qtsensors \ -skip qtserialbus \ -skip qtspeech \ -skip qtvirtualkeyboard \ -skip qtwebview -- \ -DCMAKE_CXX_STANDARD=23 \ -DCMAKE_CXX_STANDARD_REQUIRED=ON \ -DCMAKE_CXX_EXTENSIONS=OFF \ -DCMAKE_WARN_DEPRECATED=FALSE \ -DCMAKE_SUPPRESS_DEVELOPER_WARNINGS=TRUE < /code> По какой -то причине он не удается так: < /p> /usr/bin/g++-15 -DGLSLANG_OSINCLUDE_UNIX -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_USE_QSTRINGBUILDER -D_GLIBCXX_ASSERTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/build/qtshadertools/src/glslang/BundledGlslang_Spirv_autogen/include -I/build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/glslang/../3rdparty/glslang -I/build/deps_sources/qt-everywhere-src-6.8.2/qtbase/mkspecs/linux-g++ -I/build/qtbase/include -O2 -fPIC -fcommon -O2 -fPIC -std=c++23 -DNDEBUG -O2 -std=c++17 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -w -fno-exceptions -U_FORTIFY_SOURCE -Wsuggest-override -fcf-protection=full -D_FORTIFY_SOURCE=3 -ftrivial-auto-var-init=pattern -fstack-protector-strong -fstack-clash-protection -MD -MT qtshadertools/src/glslang/CMakeFiles/BundledGlslang_Spirv.dir/__/3rdparty/glslang/SPIRV/GlslangToSpv.cpp.o -MF qtshadertools/src/glslang/CMakeFiles/BundledGlslang_Spirv.dir/__/3rdparty/glslang/SPIRV/GlslangToSpv.cpp.o.d -o qtshadertools/src/glslang/CMakeFiles/BundledGlslang_Spirv.dir/__/3rdparty/glslang/SPIRV/GlslangToSpv.cpp.o -c /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/GlslangToSpv.cpp 96.27 In file included from /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/GlslangToSpv.cpp:45: 96.27 /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/SpvBuilder.h:247:30: error: 'uint32_t' has not been declared 96.27 247 | Id makeDebugLexicalBlock(uint32_t line); 96.27 | ^~~~~~~~ 96.27 /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/SpvBuilder.h:64:1: note: 'uint32_t' is defined in header ''; this is probably fixable by adding '#include ' 96.27 63 | #include 96.27 +++ |+#include 96.27 64 | #include 96.27 /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/SpvBuilder.h:444:28: error: 'uint32_t' has not been declared 96.27 444 | void enterLexicalBlock(uint32_t line); 96.27 | ^~~~~~~~ 96.27 /build/deps_sources/qt-everywhere-src-6.8.2/qtshadertools/src/3rdparty/glslang/SPIRV/SpvBuilder.h:444:28: note: 'uint32_t' is defined in header ''; this is probably fixable by adding '#include ' [/code] Обратите внимание, что -std = c ++ 17 была добавлена система сборки за моей спиной. И действительно, если я снова запускаю команду компиляции, удаляя -std = c ++ 17 , она компилируется без проблемы. Кто -нибудь имеет подсказку, почему дополнительный -std = c ++ 17 добавляется система сборки и как это предотвратить?