Why are there separate
lib folders for code?
This structure used to work for me:
/ProjectDir/src/main.cpp /ProjectDir/src/Foo/Bar.cpp /ProjectDir/src/Foo/Bar.h
It used to work for me, because – now that I want to start unit–testing – apparently files from
Foo dir are NOT available when running
pio test -e native.
OK, the instruction is in the docs: Shared Code — PlatformIO v6.1 documentation
So I moved my files like this and the
Unity tests started working:
/ProjectDir/src/main.cpp /ProjectDir/lib/Foo/src/Foo/Bar.cpp /ProjectDir/lib/Foo/src/Foo/Bar.h
The question is WHY? The
Bar class is not a “library”, it is just a file with a class that is INTERNAL to the project. It is part of the project sources, I thought
src dir is for that… [?]
I’m kinda new to C/C++ in general, but I guess there would be a historical reason to put “external” files [“library”/“vendor”] into the
lib dir. Nowadays we have dependency managers that download such code. PlatformIO does it. But it does not put external dependencies to
lib dir, but rather hides it inside
.pio [that’s ok for me].
The only logical reason for me to use
lib dir would be to download external lib “by hand” and put it into my project “by hand” to the
lib dir to keep it separate from my source files.
So… the question, to sum up, is… why am I required to put my source files in the lib dir?