CPayne CPayne - 28 days ago 14
C++ Question

CLion indexer does not resolve some includes in the project directory

I have a CLion C++ project that has the following structure:

| ----> my_own.hpp
----> my_app
----> my_src.cpp

The first line of my_src.cpp is

#include "my_includes/my_own.hpp"

I use an external build system that requires this inclusion format. The problem is if I use a function in my source file defined in the included header, CLion says "Cannot find my_own.hpp" if I try to hover over the inclusion.

I tried marking the include directory as containing Project Source or Headers but this didn't fix it. Any ideas?


You need to create a CMakeLists.txt for CLion to be happy. It is enough to declare all the source files, you don't have to convert your scons (or any other build system) to cmake.

You don't even have to write the CMakeLists.txt by hand, you can ask CLion to do it: File | Import project ... | and then point at the directory containing your project.

Now edit the generated CMakeLists.txt and add a cmake command to tell CLion where to find the includes (actually to tell the compiler, and CLion will reuse that information).

Since your source files use the include as #include "my_includes/my_own.hpp", you need to tell cmake the base directory containing directory my_includes:


Where the dot means the same directory as the one containing the CMakeLists.txt.

I tested with a project reproducing your layout and from my_src.cpp I can navigate to my_own.hpp.

Then to build you still have to use scons in a console. It is also possible to add a cmake command, add_custom_target() that will call your scons (or your make, or whatever), so that you can also navigate from CLion to the build errors.