Hopefully this isn’t really a stupid question, but bear with me!
I’m using VSCode to develop my Daisy code in C++, and uploading via USB using the makefile. I’m used to being able to separate my code into various .cpp files, with associated .h header files containing forward declarations. I would then #include these header files in the primary .cpp file. However when I attempt to compile a program with this structure, I get errors saying I have undefined references to the functions in my additional .cpp files. If I put copy the function into the header file, it works, so it’s as if the compiler is not seeing the additional .cpp files.
I noticed in the makefile there’s the line:
CPP_SOURCES = Example.cpp
Is there a way to compile all .cpp files in the directory? Or am I going about this wrong way? How are other people structuring their directories?
Oh wait, sorry I think I’ve found the problem. My function forward declaration (in my header file) was inside
namespace daisysp{ },
and I had the line:
using namespace daisysp;
at the top of my additional .cpp file. Removing those and referencing both .cpp files in the makefile has done the trick. Not quite sure why this fixed it, but it now works…
I’ve run into the same problem with trying to link multiple files. I got past it by adding source files for Make as suggested. I ended up replacing the CPP_SOURCES assignment in my Makefile with:
CPP_SOURCES = $(wildcard *.cpp)
This pulls in all .cpp files in the project directory. Unless folks are in the habit of allowing unused .cpp files within a project (I don’t), this seems like a good way to go.