Clion не будет индексировать автоматически созданные заголовочные файлы пользовательского интерфейса - PullRequest
0 голосов
/ 12 сентября 2018

Я смотрел на исходный код KeepassXC , с Clion в качестве моей IDE выбора.Немного покопавшись и переместившись по исходному коду, я заметил, что один из исходных файлов имеет следующую директиву #include:

#include "ui_MainWindow.h"

с красным подчеркиванием.При наведении курсора мыши на него появляется «ui_MainWindow.h 'not found».

Файл CMakeLists.txt проекта содержит три типа сборки:

  • Debug
  • Релиз
  • Релиз с отладочной информацией

и, как только все три типа сборки будут успешно собраны, файл, который должен искать 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 верна.

1 Ответ

0 голосов
/ 07 января 2019

этот ответ https://stackoverflow.com/a/31293158/192798 помог мне найти решение для моего случая. у меня также была та же проблема для вас, где он раньше работал, а затем вдруг не смог найти файл заголовка. для меня я использовал target_include_directories, поэтому мне пришлось сказать clion, чтобы выбрать конфигурацию, соответствующую цели. (Я выбирал одного из зависимых от цели.) Затем я строю, затем я могу переключиться на любую конфигурацию.

для вашего случая, после переключения конфигурации вам может понадобиться собрать, чтобы clion забрал файл.

...