Ошибка при создании приложения C++ с использованием KXmlGuiWindow
Я следил за вводным руководством по использованию KDE Framework и столкнулся с проблемами при компиляции. Код такой же, как в учебнике. Компилятор выводит:
fatal error: KXmlGuiWindow: No such file or directory
Моя первая мысль заключалась в том, что мне просто не хватает пакета, поэтому я использовал поиск apt-cache для поиска kxml и установил libkf5xmlgui-dev. Несмотря на это ошибка сохраняется. Я не мог нигде в Интернете ссылки на эту ошибку. Изменился ли путь импорта? Требуется ли другой пакет?
Я использую Kubuntu 20.04.
Раньше мне приходилось устанавливать другие пакеты для компиляции программы «Hello World», которые еще не включали KXmlGuiWindow, но когда я их установил, все работало нормально.
Редактировать:
find /usr -name KXmlGuiWindow
дал мне результат
/usr/include/KF5/KXmlGui/KXmlGuiWindow
. Я использую Atom для своего редактора кода, поэтому я компилирую программу с терминала, выполняя команды, приведенные в учебнике, который
cmake .. && make
(из каталога сборки в корневом каталоге проекта).
Полный вывод этой команды:
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Installing in the same prefix as Qt, adopting their path scheme.
-- Looking for __GLIBC__
-- Looking for __GLIBC__ - found
-- Performing Test _OFFT_IS_64BIT
-- Performing Test _OFFT_IS_64BIT - Success
-- Performing Test HAVE_DATE_TIME
-- Performing Test HAVE_DATE_TIME - Success
-- Found KF5CoreAddons: /usr/lib/x86_64-linux-gnu/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version "5.68.0")
-- Found Gettext: /usr/bin/msgmerge (found version "0.19.8.1")
-- Found KF5I18n: /usr/lib/x86_64-linux-gnu/cmake/KF5I18n/KF5I18nConfig.cmake (found version "5.68.0")
-- Found KF5WidgetsAddons: /usr/lib/x86_64-linux-gnu/cmake/KF5WidgetsAddons/KF5WidgetsAddonsConfig.cmake (found version "5.68.0")
-- Found KF5: success (found suitable version "5.68.0", minimum required is "5.2.0") found components: CoreAddons I18n WidgetsAddons
-- The following REQUIRED packages have been found:
* ECM (required version >= 1.0.0)
* Qt5Gui (required version >= 5.12.8)
* Qt5 (required version >= 5.3.0)
* Qt5Core (required version >= 5.12.0)
* KF5CoreAddons (required version >= 5.2.0)
* Gettext
* KF5I18n (required version >= 5.2.0)
* Qt5Widgets (required version >= 5.12.0)
* KF5WidgetsAddons (required version >= 5.2.0)
* KF5 (required version >= 5.2.0)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/simon/Documents/Code/helloWorld/build
Scanning dependencies of target helloworld_autogen
[ 25%] Automatic MOC for target helloworld
[ 25%] Built target helloworld_autogen
Scanning dependencies of target helloworld
[ 50%] Building CXX object CMakeFiles/helloworld.dir/helloworld_autogen/mocs_compilation.cpp.o
[ 75%] Building CXX object CMakeFiles/helloworld.dir/helloWorld.cpp.o
In file included from /home/simon/Documents/Code/helloWorld/helloWorld.cpp:6:
/home/simon/Documents/Code/helloWorld/mainwindow.h:4:10: fatal error: KXmlGuiWindow: No such file or directory
4 | #include <KXmlGuiWindow>
| ^~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/helloworld.dir/build.make:76: CMakeFiles/helloworld.dir/helloWorld.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:82: CMakeFiles/helloworld.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Добавление флага устранило одну из ошибок, упомянутую в исходном сообщении. У меня по-прежнему возникают другие ошибки, но я сначала поищу существующие решения.
1 ответ
Сложно ответить на вопрос с небольшим количеством важных данных, но я постараюсь дать вам несколько советов, как решить проблему.
- Во-первых, каково полное сообщение об ошибке? Это исходит от компилятора или компоновщика? Думаю, дело в компиляторе. Так что, скорее всего, компилятор недоволен следующей строкой:
#include <KXmlGuiWindow>
Если это так, вы должны увидеть (и включить сюда) сообщение компилятора с номером строки, в которой он «увидел» проблему, скажем, «строка 4».
- Проверьте, установлен ли у вас где-нибудь этот файл
find /usr -name KXmlGuiWindow
В моем случае ответ такой:
/ usr / include / KF5 / KXmlGui / KXmlGuiWindow
Если удастся найти, добавьте обычный
-IPATH_TO_THE_FILE
флаг к флагам компиляции.
В противном случае у вас нет необходимой библиотеки. Тем не менее, список файлов , включенных в пакет Kubuntu можно найти в интернете, например , здесь: (плюс минус версия Kubuntu): https://packages.ubuntu.com/xenial/amd64/libkf5xmlgui-dev/filelist файл, который компилятор не может найти, находится в списке в
/usr/include/KF5/KXmlGui/
каталог.
Итак, скорее всего добавление
-I/usr/include/KF5/KXmlGui/
к флагам компилятора должно решить вашу проблему.