CLion fails to find include files in lib folder


#1

Hello,

after CLion target for library code completion was implemented, there is still a bug in the code-completion for any code in the “lib” folder. Inside these code files, CLion is not able to resolve include files, neither for the Arduino environment or the C standard library (like string.h). It does recommend to include non-found functions from a very long relative path though.

It looks like this:

Folder structure:

To reproduce, do a test project and add some library. For example:

mkdir piotest && cd piotest
pio init -b uno --ide=clion
wget http://playground.arduino.cc/uploads/Code/DateTime.zip && unzip DateTime.zip -d lib/
#press "n" to *not* overwrite
touch src/main.cpp
pio init --ide=clion

Then open the piotest program in CLion.
I’m using the latest platformio development version PlatformIO, version 3.5.1a6 and CLion 2017.3.


#2

I’ve also seen this, but only in nested folders, top level libs (ie code in the library folder root only) seems to work but subfolders do not. I had a look at this but I couldn’t see a nice way in CMake to recursively include everything under lib and doing a file GLOB_RECURSIVE to make a list of sources did not seem to improve the situation :confounded:


#3

I’m not good in CMake :frowning: Sorry. Could someone help with PR for https://github.com/platformio/platformio-core/tree/develop/platformio/ide/tpls/clion ?


#4

Any updates on this? When creating a bigger project and using sub-folders (within the main src/ folder), It’s most uncomfortable that CLion cannot resolve the include files and you get a sea of red text from all the “errors” in the code. This makes CLion nearly unusable for big projects with a sub-folder structure.


#5

I’m pretty sure doing File > Reload CMake Project resolves that.


#6

I’m pretty sure it doesn’t, as someone who has worked on that project multiple weeks and reloaded / re-initialized the project many times. If it does solve the error for you, please describe it step by step what you did with the example project above so I can reproduce.


#7

I was talking about subdirectories in the src folder. After creating a file in a subdirectory, File -> Reload CMake Project made CLion recognize includes correctly. This doesn’t seem to work in library folders though.

I have created a pull request (#1429) which fixes this behaviour in the lib and .piolibdeps folders.


#8

Thanks, merged! PIO Core 3.5.2 is planned for release tomorrow.


#9

Can happily confirm that this fixed it – all includes are now fully working. Awesome!


#10

PIO Core 3.5.2 is released! :wink: