Индексатор CLion не разрешает некоторые включения в каталоге проекта
У меня есть проект CLion C++, который имеет следующую структуру:
project
---->my_includes
| ----> my_own.hpp
---->source
----> my_app
----> my_src.cpp
Первая строка my_src.СРР
#include "my_includes/my_own.hpp"
Я использую внешнюю систему сборки, которая требует этого формата включения. Проблема в том, что если я использую функцию в исходном файле, определенном в заголовке included, CLion говорит: "Не могу найти my_own.ГЭС", если я попытаюсь зависнуть над включением.
Я попытался пометить каталог include как содержащий исходный код проекта или заголовки, но это не исправило его. Есть идеи?
2 ответа:
Вам нужно создать
CMakeLists.txt
, Чтобы Клион был счастлив. Достаточно объявить все исходные файлы, вам не нужно конвертировать ваш scons (или любую другую систему сборки) в cmake.Вам даже не нужно писать CMakeLists.txt вручную, вы можете попросить CLion сделать это:
File | Import project ... |
, а затем указать на каталог, содержащий ваш проект.Теперь отредактируйте сгенерированный
CMakeLists.txt
и добавьте команду cmake, чтобы сообщить CLion, где найти includes (фактически сказать компилятору, и CLion будет повторное использование этой информации).Поскольку ваши исходные файлы используют include как
#include "my_includes/my_own.hpp"
, вам нужно сообщить cmake базовый каталог, содержащий каталогmy_includes
:include_directories(.)
Где точка означает тот же каталог, что и каталог, содержащий
CMakeLists.txt
.Я протестировал проект, воспроизводящий ваш макет, и от
my_src.cpp
я могу перейти кmy_own.hpp
.Тогда для сборки вам все равно придется использовать scons в консоли. Также можно добавить команду cmake,
add_custom_target()
, которая вызовет ваши scons (или ваш make, или что-то еще), так что вы также можете перейти от CLion к ошибкам сборки.
Это должен быть проект на основе CMake, чтобы правильно открыться в CLion. Проверить Тмаки основы учебник если вы новичок в CMake, например: https://www.jetbrains.com/help/clion/2016.1/quick-cmake-tutorial.html