После обновления cmake до 3.9.2 получил при сборке Generating MOC predefs moc_predefs.h AutoMoc: Error: moc predefs generation command failed AutoMoc: Command: -- AutoMoc: Command output: x86_64-alt-linux-g++: error: unrecognized command line option '-bTelegram_pch/stdafx.h' Используется cmake: $ grep MOC CMakeLists.txt set(CMAKE_AUTOMOC ON) set_target_properties(Telegram PROPERTIES AUTOMOC_MOC_OPTIONS -bTelegram_pch/stdafx.h) Почему-то параметр для moc -b <file> Prepend #include <file> (preserve default include). стал передаваться в компилятор. Изменение строки на set(CMAKE_AUTOMOC_MOC_OPTIONS ${CMAKE_AUTOMOC_MOC_OPTIONS} "-b" "Telegram_pch/stdafx.h") не помогло.
Откат до cmake-3.6.3-alt0.2 решает проблему. Проваленное задание на сборку http://git.altlinux.org/tasks/191932/
У меня перестало воспроизводится.
Разобрался в себе. Проблема появляется, начиная с cmake 3.9.2-alt0.1 * Вт сен 12 2017 L.A. Kostis <lakostis@altlinux.ru> 3.9.2-alt0.1 - 3.9.2: + enable server mode by default. + update buildreq (added librhash and libuv). Проваливающееся задание http://git.altlinux.org/tasks/191956/ [ 16%] Automatic MOC and RCC for target Telegram Generating MOC predefs moc_predefs.h AutoMoc: Error: moc predefs generation command failed AutoMoc: Command: /usr/bin/c++ -dM -E -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -I/usr/src/RPM/BUILD/telegram-desktop-1.1.23/Telegram -I/usr/src/RPM/BUILD/telegram-desktop-1.1.23/Telegram/Telegram_autogen/include -I/usr/src/RPM/BUILD/telegram-desktop-1.1.23/Telegram/SourceFiles -I/usr/include/qt5/QtCore -I/usr/include/qt5/QtCore/5.9.2 -I/usr/include/qt5/QtCore/5.9.2/QtCore -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtGui/5.9.2 -I/usr/include/qt5/QtGui/5.9.2/QtGui -I/usr/include/libdrm -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/tgvoip -I/usr/include/opus -I/usr/include/libmicrosoft-gsl -I/usr/src/RPM/BUILD/telegram-desktop-1.1.23/Telegram/ThirdParty/emoji_suggestions -I/usr/include/libvariant -I/usr/include/minizip -I/usr/include/AL -I/usr/include/libappindicator3-0.1 -I/usr/include/libdbusmenu-glib-0.4 -I/usr/src/RPM/BUILD/telegram-desktop-1.1.23/Telegram/generated -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/share/qt5/../../lib/qt5/mkspecs/linux-g++ -I/usr/include/qt5/QtNetwork -I/usr/include -DCUSTOM_API_ID -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQ_OS_LINUX64 -DTDESKTOP_DISABLE_AUTOUPDATE -DTDESKTOP_DISABLE_CRASH_REPORTS -DTDESKTOP_DISABLE_DESKTOP_FILE_GENERATION -DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME -DTDESKTOP_DISABLE_UNITY_INTEGRATION -D__STDC_FORMAT_MACROS -b Telegram_pch/stdafx.h AutoMoc: Command output: i586-alt-linux-g++: error: Telegram_pch/stdafx.h: No such file or directory i586-alt-linux-g++: error: unrecognized command line option '-b' при строках в CMakeLists.txt: set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC_MOC_OPTIONS ${CMAKE_AUTOMOC_MOC_OPTIONS} "-b" "Telegram_pch/stdafx.h")
Жалоба на подобное поведение с cmake 3.9.2 https://github.com/apitrace/apitrace/issues/528
Пишут, что с cmake 3.9.4 проблему не испытывают: https://github.com/apitrace/apitrace/issues/528#issuecomment-340477280
Собрал cmake из Сизифа в p8 и проверил сборку qt5 5.7.1 and cmake 3.9.2. Ошибки нет (правда, проверял на пакете apitrace, в котором такая же проблема). Выходит, проблема возникла с qt 5.9
@vitlav You were right, it only happens with the exact combination of CMake 3.9 + Qt 5.9. I opened a bug report at CMake in order to get some upstream feedback: https://gitlab.kitware.com/cmake/cmake/issues/17418
Подтвердили Since CMake 3.9 a common moc_predefs.h file is generated if the Qt version is >= 5.9. Unfortunately the AUTOMOC_MOC_OPTIONS were passed to the compiler command that generates the file. и исправили https://gitlab.kitware.com/sebholt/cmake/commit/96d20a4de3420fca0e25a67c24e6f7eaead4420d
cmake-3.9.2-alt1 -> sisyphus: Tue Oct 31 2017 Vitaly Lipatov <lav@altlinux.ru> 3.9.2-alt1 - autogen: Don't use AUTOMOC_MOC_OPTIONS in moc-predefs command (ALT bug 34055)
На всякий случай добавлю, что проблема касалась сочетания cmake 3.9.x и qt >= 5.9 Разработчик вроде как выпустил 3.9.5 с исправлением, но большого желания у него не было, так что без необходимости лучше не обновлять пакет на что-то меньшее, чем 3.10.0.