Clion不会索引自动生成的ui头文件

时间:2018-09-11 23:07:41

标签: qt cmake qt5 clion

我正在研究Report Page Tooltip,并选择了Clion作为我的IDE。在对源代码进行了一些挖掘和浏览之后,我注意到其中一个源文件具有以下#include指令:

#include "ui_MainWindow.h"

带有红色下划线。用鼠标悬停在它上面,上面写着“找不到ui_MainWindow.h”。

项目的CMakeLists.txt文件提供了三种构建类型:

  • 调试
  • 发布
  • 发布调试信息

,一旦成功构建了所有三种构建类型,CLion应该在以下位置查找文件:

cmake-build-(debug|release|relwithdebuginfo)
└── src
    └── keepassx_core_autogen
        └── include
            ├── moc_KMessageWidget.cpp
            ├── ui_AboutDialog.h
            ├── ui_CategoryListWidget.h
            ├── ui_ChangeMasterKeyWidget.h
            ├── ui_CloneDialog.h
            ├── ui_CsvImportWidget.h
            ├── ui_DatabaseOpenWidget.h
            ├── ui_DatabaseSettingsWidgetEncryption.h
            ├── ui_DatabaseSettingsWidgetGeneral.h
            ├── ui_DatabaseSettingsWidget.h
            ├── ui_DetailsWidget.h
            ├── ui_EditEntryWidgetAdvanced.h
            ├── ui_EditEntryWidgetAutoType.h
            ├── ui_EditEntryWidgetHistory.h
            ├── ui_EditEntryWidgetMain.h
            ├── ui_EditEntryWidgetSSHAgent.h
            ├── ui_EditGroupWidgetMain.h
            ├── ui_EditWidget.h
            ├── ui_EditWidgetIcons.h
            ├── ui_EditWidgetProperties.h
            ├── ui_EntryAttachmentsWidget.h
            ├── ui_MainWindow.h
            ├── ui_PasswordGeneratorWidget.h
            ├── ui_SearchWidget.h
            ├── ui_SettingsWidgetGeneral.h
            ├── ui_SettingsWidgetSecurity.h
            ├── ui_SetupTotpDialog.h
            ├── ui_TotpDialog.h
            └── ui_WelcomeWidget.h

经过几个小时的尝试,我发现有些奇怪。仅当我在Debug模式下构建项目时,红色的下划线才会消失(并且代码导航也将起作用)(即,它将仅从cmake-build-debug中选择文件)。 如果我清理调试版本并使用发布版本,则无法让CLion从cmake-build-release中选择文件。 cmake-build-relwithdebinfo同样适用。

代码可以编译并正常运行,这意味着CMake配置正确。

2 个答案:

答案 0 :(得分:1)

您可以通过更改Build, Execution, Deployment > Toolchains下的Clion环境以使用随Qt一起安装的编译器来解决此问题。 对于MinGW 64位,您可以在C:\Qt\Qt5.x.x\Tools\mingwxxx_64下找到它。

答案 1 :(得分:0)

这个答案https://stackoverflow.com/a/31293158/192798帮助我找到了解决方案。我也曾经遇到过同样的问题,它曾经在哪里工作,然后突然找不到头文件。对我来说,我使用了target_include_directories,所以我不得不告诉clion选择与目标相对应的配置。 (我选择了目标的一个依赖项)。然后构建,然后可以切换到任何配置。

对于您的情况,在切换配置后,您可能需要进行构建以使小伙子能够拿起文件。