Page 1 of 1

ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Thu Nov 02, 2017 2:49 am
by fermienrico
Hi all,

I followed Neil's tutorial here:

https://www.youtube.com/watch?v=bYh2w0HzS7s

I've got everything working except for a library that I added in components folder (U8g2). U8g2 library has two source folders, so I made a component.mk file in project-folder/components/U8g2/ with the following:

Code: Select all

COMPONENT_SRCDIRS := src src/clib
COMPONENT_ADD_INCLUDEDIRS := src src/clib
OK. make all and I can compile everything sweet! I got my LCD working through command line "make flash".

Now, back to Eclipse. It cannot find a lot of the U8g2 class instances and it gives me a bunch of swiggly red lines calling "..... cannot be resolved".

Image

My includes and everything look solid in the project settings. Not sure what's wrong!
Image

I think I am about to go punch a hole in the wall. Eclipse has the worst piece of software indexer - It is a seperate piece of crap that works on its own mind. Compilation succeeds but indexing doesn't. It is like rolling a dice with the indexer. Half the time it does some magic and half of the time it works.

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Thu Nov 02, 2017 6:18 am
by chegewara
Sometimes its autoindexing when you just make with eclipse and when you pass thru make with no errors then all red lines gone. Sometimes you will have to add some includes even if you can compile with no problem from cli eclipse wont let you to compile. But with extra includes it works.

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Fri Nov 03, 2017 5:40 am
by fermienrico
Can you tell me what exactly I need to add in the includes?

My project structure is as follows:

Code: Select all

myapp/
	myapp.cpp
	components/
		U8g2/
			src/
				clib/
and my components.mk file is described in the first post.

I have tried adding a local workspace path:

Code: Select all

/myapp/components/U8g2
/myapp/components/U8g2/src
/myapp/components/U8g2/src/clib
/myapp/build/include
/myapp/build/U8g2
but none of those work!

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Fri Nov 03, 2017 6:37 am
by chegewara
I dont meant to add includes to eclipse settings. I mean to add

Code: Select all

#include some_header.h
directives in files you cant compile. This example is just to show many cases i have:
many and really many times i have this red line ie underlying uint8_t, uint16_t etc. Maybe its wrong prepared eclipse environment but it suits to me how it is. Those files are easy compiled from command line, but to get rid of it i just need to add

Code: Select all

#include "freertos/FreeRTOS.h"
. No more problems with indexing.
In your case it will be some header file from U8g2 library.

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Sat Nov 04, 2017 5:05 am
by kolban
What I have found useful is to see an error of the form

MyType myVar;

where MyType can't be found and then search through the source and header files to find where MyType is in fact defined. From there, it should be procedural to add the relevant include into Eclipse and then manually re-build the index (at least that has worked for me so far).

If there are still problems and mysteries. I'll be happy to try and assist.

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Sat Nov 04, 2017 3:06 pm
by fermienrico
Thanks Neil.

When you say "add includes", does that mean add "#include file.h" on my main.cpp or add includes in the Paths/Includes settings of the project in Eclipse IDE?

Re: ESP32 + Eclipse - How can I add components to Include Dirs?

Posted: Sat Nov 04, 2017 10:41 pm
by kolban
To start answering the last question ... maybe both.

For example, if your code contains:

MyType myVar;

Then the compiler will expect to "know" what MyType looks like. If it isn't defined in the C/C++ file that uses it, then it will have to be defined in one of the header files that your source file includes. That can be either explicitly by a direct #include or implicitly by a #include of a header that itself includes your type definition. Once done, you should be able to run "make" at your Linux command line.

For our story regarding Eclipse, understand that Eclipse is the editor environment your are likely using but it is still the ESP-IDF build system you are using to compile. The only reason you have to add directories which host include files into your Eclipse project is to remove "not found" messages in your editor. Since the compilation is performed by ESP-IDF build, editor validation errors shown in Eclipse are actually harmless. You would fix these by adding paths to include directories only to give you better entry assistance and cleanup the editor environment.