С cmake-3.16.3-alt1 нормально собирается. После обновления cmake до 3.17.3 получаем: /usr/bin/cmake -E cmake_link_script CMakeFiles/gimagereader.dir/link.txt --verbose=1 /usr/bin/g++ -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -fopenmp -rdynamic CMakeFiles/gimagereader.dir/gimagereader_autogen/mocs_compilation.cpp.o CMakeFiles/gimagereader.dir/common/CCITTFax4Encoder.cc.o CMakeFiles/gimagereader.dir/common/PaperSize.cc.o CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o CMakeFiles/gimagereader.dir/qt/src/Config.cc.o CMakeFiles/gimagereader.dir/qt/src/ConfigSettings.cc.o CMakeFiles/gimagereader.dir/qt/src/CrashHandler.cc.o CMakeFiles/gimagereader.dir/qt/src/DisplayRenderer.cc.o CMakeFiles/gimagereader.dir/qt/src/Displayer.cc.o CMakeFiles/gimagereader.dir/qt/src/DisplayerToolSelect.cc.o CMakeFiles/gimagereader.dir/qt/src/DjVuDocument.cc.o CMakeFiles/gimagereader.dir/qt/src/FileDialogs.cc.o CMakeFiles/gimagereader.dir/qt/src/MainWindow.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputEditor.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputEditorText.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputTextEdit.cc.o CMakeFiles/gimagereader.dir/qt/src/Recognizer.cc.o CMakeFiles/gimagereader.dir/qt/src/Scanner.cc.o CMakeFiles/gimagereader.dir/qt/src/SearchReplaceFrame.cc.o CMakeFiles/gimagereader.dir/qt/src/SourceManager.cc.o CMakeFiles/gimagereader.dir/qt/src/SubstitutionsManager.cc.o CMakeFiles/gimagereader.dir/qt/src/TessdataManager.cc.o CMakeFiles/gimagereader.dir/qt/src/Utils.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/DisplayerToolHOCR.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRDocument.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCROdtExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRPdfExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRTextExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/OutputEditorHOCR.cc.o CMakeFiles/gimagereader.dir/qt/src/main.cc.o CMakeFiles/gimagereader.dir/qt/src/scanner/ScannerSane.cc.o CMakeFiles/gimagereader.dir/qrc_gimagereader.cpp.o -o gimagereader-qt5 -ltesseract -lqtspell-qt5 -lpoppler-qt5 -lquazip5 -lsane -ldjvulibre -lenchant-2 -lpodofo -ldl /usr/lib/libQt5Network.so.5.12.8 /usr/lib/libQt5DBus.so.5.12.8 /usr/lib/libQt5Xml.so.5.12.8 /usr/lib/libQt5PrintSupport.so.5.12.8 /usr/lib/libQt5Widgets.so.5.12.8 /usr/lib/libQt5Gui.so.5.12.8 /usr/lib/libQt5Core.so.5.12.8 [ 57%] Linking CXX executable gimagereader-qt5 /usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `Acquirer::~Acquirer()': /tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.cc:75: undefined reference to `vtable for Acquirer' /usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `Acquirer::Acquirer(UI_MainWindow const&)': /tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.cc:37: undefined reference to `vtable for Acquirer' /usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `ScannerSane::ScannerSane()': /tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/scanner/ScannerSane.hh:33: undefined reference to `vtable for ScannerSane' /usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `AbstractSetting::AbstractSetting(QString const&)': /tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/ConfigSettings.hh:59: undefined reference to `vtable for AbstractSetting' /usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `ComboSetting::ComboSetting(QString const&, QComboBox*, int)':
Видимо, дело в этим изменении, начинающемся с 3.17.0, о котором пишет cmake при сборке: CMake Warning (dev) in CMakeLists.txt: Policy CMP0100 is not set: Let AUTOMOC and AUTOUIC process .hh files. Run "cmake --help-policy CMP0100" for policy details. Use the cmake_policy command to set the policy and suppress this warning. For compatibility, CMake is excluding the header file(s): "/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/CCITTFax4Encoder.hh" "/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/LangTables.hh" "/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/PaperSize.hh" "/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.hh" ... $ cmake --help-policy CMP0100 CMP0100 ------- Let ``AUTOMOC`` and ``AUTOUIC`` process header files that end with a ``.hh`` extension. Since version 3.17, CMake processes header files that end with a ``.hh`` extension in ``AUTOMOC`` and ``AUTOUIC``. In earlier CMake versions, these header files were ignored by ``AUTOMOC`` and ``AUTOUIC``. This policy affects how header files that end with a ``.hh`` extension get treated in ``AUTOMOC`` and ``AUTOUIC``. The ``OLD`` behavior for this policy is to ignore ``.hh`` header files in ``AUTOMOC`` and ``AUTOUIC``. The ``NEW`` behavior for this policy is to process ``.hh`` header files in ``AUTOMOC`` and ``AUTOUIC`` just like other header files. .. note:: To silence the ``CMP0100`` warning source files can be excluded from ``AUTOMOC`` and ``AUTOUIC`` processing by setting the source file properties ``SKIP_AUTOMOC``, ``SKIP_AUTOUIC`` or ``SKIP_AUTOGEN``. .. code-block:: cmake # Source skip example: set_property(SOURCE /path/to/file1.hh PROPERTY SKIP_AUTOMOC ON) set_property(SOURCE /path/to/file2.hh PROPERTY SKIP_AUTOUIC ON) set_property(SOURCE /path/to/file3.hh PROPERTY SKIP_AUTOGEN ON) This policy was introduced in CMake version 3.17.0. CMake version 3.17.0 warns when the policy is not set and uses ``OLD`` behavior. Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW`` explicitly.
gimagereader-3.3.1-alt3 -> sisyphus: Thu Jun 25 2020 Vitaly Lipatov <lav@altlinux.ru> 3.3.1-alt3 - fix build with cmake after 3.17.0 (ALT bug 38643)
Тогда я добавлю для памяти, что исправление сделано в апстриме так: ++IF(${CMAKE_VERSION} VERSION_GREATER "3.17.0") ++CMAKE_POLICY(SET CMP0100 NEW) ++ENDIF() Они не захотели применить появившийся в 3.7.0 VERSION_GREATER_EQUAL Поэтому сборка c cmake 3.17.0 работать не будет, хотя в спеке это не указано.