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

ix0qys7i  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(370)

我看了一下KeepassXC's source code,选择了Clion作为我的IDE。在对源代码进行了一些挖掘和导航之后,我注意到其中一个源文件具有以下#include指令:

#include "ui_MainWindow.h"

有红色下划线。用鼠标悬停在它上面,它说“找不到”ui_MainWindow. h“。
项目的CMakeLists.txt文件提供了三种构建类型:

  • debugging
  • 放行
  • 发布调试信息

并且,成功构建所有三种构建类型后,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

经过几个小时的努力,我发现了一些奇怪的事情。红色下划线会消失(并且代码导航也将工作)(也就是说,它只会从cmake-build-debug中选择文件)。如果我清理调试版本并使用发布版本,我无法让CLion从cmake-build-release中选择文件。同样的情况也适用于cmake-build-relwithdebinfo
代码编译和运行正常,这意味着CMake配置是正确的。

xggvc2p6

xggvc2p61#

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

im9ewurl

im9ewurl2#

这个答案https://stackoverflow.com/a/31293158/192798帮助我找到了我的案例的解决方案。我也遇到了同样的问题,它曾经工作,然后突然找不到头文件。对我来说,我使用target_include_directories,所以我必须告诉clion选择对应于目标的配置。(我选择了目标的一个依赖项。)然后我构建,然后我可以切换到任何配置。
对于您的情况,在切换配置之后,您可能需要构建以获取clion来拾取文件。

shyt4zoc

shyt4zoc3#

在生成后,只需手动重新加载即可创建项目它对我来说很好用
参考:https://youtrack.jetbrains.com/issue/CPP-22534

相关问题