Хобрук: Ваш путь к мастерству в программировании

Скажите CLion использовать заголовок, включающий путь с префиксом

У меня есть следующий макет проекта:

  • workspace
    • project_a
      • project_a -> .h files here
      • Корень -> файлы .cxx здесь
    • project_b
      • project_b -> .h files here
      • Корень -> файлы .cxx здесь

Я не могу изменить макет каталога из-за используемой нами системы сборки. Заголовки включены как

#include "project_a/some_header.h

также из соответствующего файла .cxx. Я создал файл CMakeLists.txt в корневом каталоге, который добавляет все мои проекты через include_directories(project_a project_b), который должен быть префиксом пути перед тем, который указан в #include. CLion не может найти и проиндексировать ни один из моих файлов.

Кроме того, у меня есть автоматически сгенерированный каталог заголовков структуры

  • include
    • lib_a -> .h files
    • lib_b -> .h файлы

и я настроил их соответствующим образом, но это тоже не работает.

Не удается ли CLion разрешить путь с префиксом в #include или почему это не работает?

14.04.2016

Ответы:


1

В CMakeList.txt, который должен находиться в родительской папке, в папке рабочей области в этой ситуации добавьте

set(INCLUDE_DIRECTORIES ./)

Если, например, есть родительская папка, в которой содержатся включаемые файлы:

  • workspace
    • includes_folder
      • project_a
        • a.h
    • b.h: #include ‹project_a / a.h›

Тогда CMakeList.txt должен содержать

set(INCLUDE_DIRECTORIES ./)
include_directories(includes_folder)
21.07.2020

2

Если единственное, что не работает, - это интерпретация ваших заголовков Клионом, вам следует проверить Часто задаваемые вопросы по Clion. Если Clion работает не так, как вы ожидаете, возможно, ваш проект CMake настроен неправильно или вы делаете что-то непреднамеренно. Вы должны показать нам свой CMakeLists.txt.

Из FAQ по Clion:


В: CLion не может найти некоторые из моих заголовков. Где он их ищет? О: CLion выполняет поиск в тех же местах, что и CMake. Задайте переменную INCLUDE_DIRECTORIES в CMake, чтобы указать путь заголовков к среде IDE.

Кстати, в этой wiki вы можете найти множество полезных переменных CMake с описаниями, которые могут быть особенно полезными. если вы новичок в CMake.

В: Рефакторинг не работает и выделение неверно, хотя проект можно скомпилировать правильно. Что случилось? A: Скорее всего, CLion не знает о некоторых файлах в вашем проекте (эти файлы выделены серым цветом в дереве проекта): non-project-files Он получает эту информацию из файлов CMakeLists.txt следующим образом: set(SOURCE_FILES main.cpp) add_executable(my_exec ${SOURCE_FILES}) Вот как Теперь CLion знает, что main.cpp включен в ваш проект. На данный момент файлы заголовков (если их имена отличаются от соответствующих файлов .cpp, уже добавленных в переменную SOURCE_FILES) также должны быть включены в проект таким образом.

14.04.2016
Новые материалы

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...