Missing/misplaced choc files

Hey there

This one has been lowkey bothering me for a while.

Basically, from a direct clone of the Tracktion_Engine repo on the latest dev branch I will typically get the error:
choc_MultipleReaderMultipleWriterFIFO.h file not found

In the past there were a few of these files that caused errors for me. Currently I’m only getting hit with one. The actual location is in:

However tracktion_graph.h is looking for them in:
#include <choc/audio/choc_MultipleReaderMultipleWriterFIFO.h>

To solve this I can either copy the file to where tracktion_graph.h is expecting it, or I can adjust the tracktion_graph.h line to:
#include <choc/containers/choc_MultipleReaderMultipleWriterFIFO.h>

What should I be doing? My suspicion is I shouldn’t have to do anything like this - so either I’ve set stuff up for myself incorrectly or everyone else is working around this problem (which seems unlikely).

Looking forward to hearing the thoughts and probably feeling silly shortly thereafter lol!


There is a mistake in the code but only in the case where you are providing choc yourself. Are you using choc in your own code? If not, tracktion_graph should just be using the local version.
That’s what this logic does:

#if __has_include(<choc/audio/choc_SampleBuffers.h>)
 #include <choc/audio/choc_SampleBuffers.h>
 #include <choc/audio/choc_MIDISequence.h>
 #include <choc/audio/choc_MultipleReaderMultipleWriterFIFO.h>
 #include <choc/containers/choc_NonAllocatingStableSort.h>
 #include "../3rd_party/choc/audio/choc_SampleBuffers.h"
 #include "../3rd_party/choc/audio/choc_MIDISequence.h"
 #include "../3rd_party/choc/containers/choc_MultipleReaderMultipleWriterFIFO.h"
 #include "../3rd_party/choc/containers/choc_NonAllocatingStableSort.h"

I’ll fix the system include path but my guess is you don’t actually need that codepath?

1 Like

Thanks @dave96, this fixed the problem for me.

To clarify, I’m not deliberately providing choc by myself.

I did try following @austrianaudioJV advice, however I believe I was already recursing through submodules (hence JUCE is happily present and correct as a submodule inside /modules).

For me the choc directory exists only at:
with choc_MultipleReaderMultipleWriterFIFO.h living inside:
No where else on my machine actually.

modules/tracktion_graph/3rd_party only contains concurrentqueue.h, lightweightsemaphore.h and a directory called farbot.

Cheers, Jeff

Hmm, not sure why it’s picking that up then. Should be fixed on develop now anyway.

Did you specify “–recursive” when you updated the modules in the top-level directory of the repo? Because it not, this would explain why 3rd_party/choc files are not where they are expected to be, by the tracktion_graph header statements.

My advise is to try to clone tracktion_engine again and then immediately run “git submodule update --init --recursive”, before proceeding. I’ve cloned this repo multiple times myself in the last few days and been able to produce clean builds without issue, so there has to be something funky happening locally on your machine.

Do you have Long Filename Support on Windows, by any chance, turned off - and maybe your repo is in a big path already?

The choc files are included in the tracktion_engine repo, they’re not a submodule (only JUCE is).


Roger that, Dave.