Qt 6.6.7 error using ninja build and cmake
-
I am building Qt from source (github) tag: 6.6.7
Previously, using 6.5.0 it went smoothly, however now I face this error without a clue what might have caused it:
ninja : error : build.ninja:2207: multiple outputs aren't (yet?) supported by depslog; bring this up on the mailing list if it affects you
Here is my cmake Extern_Project script, which worked fine with 6.5:
set(QT_EXTERN_DIR qt-6.7.0) set(QT_PREFIX qt) set(QT_EXTERN_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${QT_PREFIX}/src/${QT_EXTERN_DIR}" ) set(QT_EXTERN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${QT_PREFIX}/src/${QT_EXTERN_DIR}-build" ) ExternalProject_Add(${QT_EXTERN_DIR} SOURCE_DIR ${QT_EXTERN_BINARY_DIR} TIMEOUT 2700 # 45 minutes PREFIX ${QT_PREFIX} CONFIGURE_COMMAND ${QT_EXTERN_BINARY_DIR}/Configure.bat -release -c++std c++17 -shared -opensource -confirm-license -widgets -gui -opengl dynamic #-opengles3 #-mediaplayer-backend wmf -skip qt5compat -skip qt3d -skip qtdatavis3d -skip qtactiveqt -skip qtconnectivity -skip qtcharts -skip qtdatavis3d -skip qtcoap -skip qtdoc -skip qtgrpc -skip qthttpserver -skip qtlanguageserver -skip qtlottie -skip qtmqtt -skip qtnetworkauth -skip qtopcua -skip qtlocation -skip qtpositioning -skip qtquick3dphysics -skip qtquickeffectmaker -skip qtquicktimeline -skip qtremoteobjects -skip qtscxml -skip qtsensors -skip qtscript -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtvirtualkeyboard -skip qtsvg -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtquick3d -skip qtuiotouch -skip qtgraphs -no-openssl -no-dbus -no-gstreamer -nomake examples -nomake tests -nomake benchmarks BUILD_COMMAND cmake --build . --parallel INSTALL_COMMAND ninja install )
Would love any hint how to diagnose the issue!
-
My ninja.exe version: 1.8.2
Ninja is too old. At https://github.com/ninja-build/ninja/issues/1184 we can see that the fix went in version 1.10.0.
I think Qt CMake code only checks for CMake versions, not for ninja versions. It would be a good suggestion at https://bugreports.qt.io/ so that people won't spend time with weird errors.
-
Hi,
Did you change ninja/cmake version ?
Do you have the same issue if not using the parallel option (or just setting it to 1 for the experiment) ? -
@SGaist Just did that and no difference.
Here is the section of the build.ninja that seems problematic, though nothing specific about that I ca see:
'''
#############################################Custom command for qtbase\src\tools\rcc\rcc_autogen\timestamp
build qtbase\src\tools\rcc\rcc_autogen\timestamp qtbase\src\tools\rcc\rcc_autogen\mocs_compilation.cpp | ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\timestamp ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\mocs_compilation.cpp: CUSTOM_COMMAND qtbase\bin\moc.exe || qtbase\bin\Qt6Core.dll qtbase\bin\cmake_automoc_parser.exe qtbase\bin\moc.exe qtbase\bin\syncqt.exe qtbase\lib\Qt6BundledPcre2.lib qtbase\lib\Qt6BundledZLIB.lib qtbase\qmodule_pri qtbase\src\3rdparty\zlib\ZlibPrivate qtbase\src\3rdparty\zlib\ZlibPrivate_sync_headers qtbase\src\corelib\Core_autogen qtbase\src\corelib\Core_autogen_timestamp_deps qtbase\src\corelib\Core_lib_pri qtbase\src\corelib\Core_sync_headers qtbase\src\tools\bootstrap\Bootstrap.lib qtbase\src\tools\rcc\rcc_autogen_timestamp_deps
COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D D:\X\ext_nena38_build\qt\src\qt-6.7.0-build\qtbase\src\tools\rcc && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_autogen D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/CMakeFiles/rcc_autogen.dir/AutogenInfo.json Release && "C:\Program Files\CMake\bin\cmake.exe" -E touch D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/rcc_autogen/timestamp && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_transform_depfile Ninja gccdepfile D:/X/ext_nena38_build/qt/src/qt-6.7.0 D:/X/ext_nena38_build/qt/src/qt-6.7.0/qtbase/src/tools/rcc D:/X/ext_nena38_build/qt/src/qt-6.7.0-build D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/rcc_autogen/deps D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/CMakeFiles/d/5261626427453b45d46e288ec291c360a2d0440e4f5913fc8c2f34379b5ddbe1.d"
DESC = Automatic MOC for target rcc
depfile = CMakeFiles\d\5261626427453b45d46e288ec291c360a2d0440e4f5913fc8c2f34379b5ddbe1.d
deps = gcc
restat = 1
'''I will go and inspect ay difference in the build artifacts between my successful 6.5 and 6.7.
My cmake version: 3.29.2
My ninja.exe version: 1.8.2
-
I compared the line in question between 6.5 and 6.7:
build qtbase\src\tools\rcc\rcc_autogen\timestamp qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Release.cpp qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Debug.cpp | ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\timestamp ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Release.cpp ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Debug.cpp: CUSTOM_COMMAND qtbase\bin\moc.exe || qtbase\bin\Qt6Core.dll qtbase\bin\cmake_automoc_parser.exe qtbase\bin\moc.exe qtbase\src\3rdparty\zlib\ZlibPrivate$:Release qtbase\src\corelib\Core_autogen_timestamp_deps$:Release qtbase\src\corelib\Core_sync_headers$:Release qtbase\src\tools\rcc\rcc_autogen_timestamp_deps$:Release COMMAND = cmd.exe /C "cd /D D:\X\ext_nena37_build\qt\src\qt-6.5.0-build\qtbase\src\tools\rcc && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_autogen D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/qtbase/src/tools/rcc/CMakeFiles/rcc_autogen.dir/AutogenInfo.json Release && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_autogen D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/qtbase/src/tools/rcc/CMakeFiles/rcc_autogen.dir/AutogenInfo.json Debug && "C:\Program Files\CMake\bin\cmake.exe" -E touch D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/qtbase/src/tools/rcc/rcc_autogen/timestamp && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_transform_depfile "Ninja Multi-Config" gccdepfile D:/X/ext_nena37_build/qt/src/qt-6.5.0 D:/X/ext_nena37_build/qt/src/qt-6.5.0/qtbase/src/tools/rcc D:/X/ext_nena37_build/qt/src/qt-6.5.0-build D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/qtbase/src/tools/rcc D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/qtbase/src/tools/rcc/rcc_autogen/deps D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/CMakeFiles/d/45a22ff0e738ef5bd37d29dd69928286296b9df5ecffbccf36c72a226d7c108c.d" DESC = Automatic MOC for target rcc depfile = D:/X/ext_nena37_build/qt/src/qt-6.5.0-build/CMakeFiles/d/45a22ff0e738ef5bd37d29dd69928286296b9df5ecffbccf36c72a226d7c108c.d restat = 1
qt 6.7:
build qtbase\src\tools\rcc\rcc_autogen\timestamp qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Release.cpp qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Debug.cpp | ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\timestamp ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Release.cpp ${cmake_ninja_workdir}qtbase\src\tools\rcc\rcc_autogen\mocs_compilation_Debug.cpp: CUSTOM_COMMAND qtbase\bin\moc.exe || qtbase\bin\Qt6Core.dll qtbase\bin\cmake_automoc_parser.exe qtbase\bin\moc.exe qtbase\src\corelib\Core_autogen_timestamp_deps$:Release qtbase\src\tools\rcc\rcc_autogen_timestamp_deps$:Release COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D D:\X\ext_nena38_build\qt\src\qt-6.7.0-build\qtbase\src\tools\rcc && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_autogen D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/CMakeFiles/rcc_autogen.dir/AutogenInfo.json Release && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_autogen D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/CMakeFiles/rcc_autogen.dir/AutogenInfo.json Debug && "C:\Program Files\CMake\bin\cmake.exe" -E touch D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/rcc_autogen/timestamp && "C:\Program Files\CMake\bin\cmake.exe" -E cmake_transform_depfile "Ninja Multi-Config" gccdepfile D:/X/ext_nena38_build/qt/src/qt-6.7.0 D:/X/ext_nena38_build/qt/src/qt-6.7.0/qtbase/src/tools/rcc D:/X/ext_nena38_build/qt/src/qt-6.7.0-build D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/qtbase/src/tools/rcc/rcc_autogen/deps D:/X/ext_nena38_build/qt/src/qt-6.7.0-build/CMakeFiles/d/5261626427453b45d46e288ec291c360a2d0440e4f5913fc8c2f34379b5ddbe1.d" DESC = Automatic MOC for target rcc depfile = CMakeFiles\d\5261626427453b45d46e288ec291c360a2d0440e4f5913fc8c2f34379b5ddbe1.d deps = gcc restat = 1
The only difference is : deps = gcc
in Qt 6.7, can that be it? -
My ninja.exe version: 1.8.2
Ninja is too old. At https://github.com/ninja-build/ninja/issues/1184 we can see that the fix went in version 1.10.0.
I think Qt CMake code only checks for CMake versions, not for ninja versions. It would be a good suggestion at https://bugreports.qt.io/ so that people won't spend time with weird errors.
-
@cristian-adam Thanks mate. That did it.
-