GCC找不到标头,但KDevelop已对其进行了解析。怎么解决?

时间:2019-03-26 18:17:39

标签: qt5 kdevelop

我包含一个KF5标头(#include <KXmlGui/KXMLGUIClient>),而当我悬停指令时KDevelop向我提供了有关此标头的信息时,GCC却找不到此标头和其他(很少和随机的)KF5标头。 / p>

我正在使用CMake,并且我使用api.kde.org查找(并链接到)每个标头所需的每个模块。我想不通。

[  5%] Building CXX object src/CMakeFiles/test_ktechlab.dir/ktechlab.cpp.o
cd /mnt/Volume_3/Gentoo/projects/ktechlab/build/src && /usr/bin/c++  -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/mnt/Volume_3/Gentoo/projects/ktechlab/build/src -I/mnt/Volume_3/Gentoo/projects/ktechlab/src -I/mnt/Volume_3/Gentoo/projects/ktechlab/build/src/test_ktechlab_autogen/include -I/mnt/Volume_3/Gentoo/projects/ktechlab/ON -I/mnt/Volume_3/Gentoo/projects/ktechlab/build -I/mnt/Volume_3/Gentoo/projects/ktechlab/build/src/core -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/core -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/drawparts -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/electronics -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/electronics/components -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/electronics/simulation -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/flowparts -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/gui -I/mnt/Volume_3/Gentoo/projects/ktechlab/build/src/gui -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/gui/itemeditor -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/languages -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/mechanics -I/mnt/Volume_3/Gentoo/projects/ktechlab/src/micro -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I/usr/lib64/qt5/mkspecs/linux-g++ -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtWidgets -I/usr/include/gpsim -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include  -std=c++0x -fno-operator-names -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time -Wsuggest-override -Wlogical-op    -fPIC -g -fvisibility=hidden -fvisibility-inlines-hidden   -fno-inline -o CMakeFiles/test_ktechlab.dir/ktechlab.cpp.o -c /mnt/Volume_3/Gentoo/projects/ktechlab/src/ktechlab.cpp
make[2]: Leaving directory '/mnt/Volume_3/Gentoo/projects/ktechlab/build'
make[1]: Leaving directory '/mnt/Volume_3/Gentoo/projects/ktechlab/build'
/mnt/Volume_3/Gentoo/projects/ktechlab/src/ktechlab.cpp:12:10: fatal error: KXmlGui/KXMLGUIClient: No such file or directory
 #include <KXmlGui/KXMLGUIClient>
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/CMakeFiles/test_ktechlab.dir/build.make:79: src/CMakeFiles/test_ktechlab.dir/ktechlab.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:279: src/CMakeFiles/test_ktechlab.dir/all] Error 2
make: *** [Makefile:144: all] Error 2
*** Failure: Exit code 2 ***

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您将必须

  1. 请确保已将XmlGui作为find_package命令的组成部分。
  2. 请确保在KF5::XmlGui中为相关目标添加target_link_libraries

如果您想知道为什么target_link_libraries影响您的包含路径,您并不孤单-但这就是它的工作方式。