Help needed Using BinaryData with cmake (JUCE 6)

Hello!
I’m trying to use Binary Data with cmake and JUCE 6.

I’ve done the following thing:

1.- Put all images in a folder called Images

2.- Created this cmakelist.txt doc in that folder:

juce_add_binary_data(WanalogBinaryData SOURCES
        knob_back.png
        knob_marker.png
        switch_green.png
        switch_red.png
        Tube_Processor_Layout.png
        vumeter.png
        wanalog_w.png
        )

3.- I added the
add_subdirectory(Images)
line in the root CMakeLists.txt document, so the Images folder gets included

4.- I’ve also added the WanalogBinaryData to the linking phase like this:

target_link_libraries(WanalogAudioPlugin PRIVATE
        WanalogBinaryData           # If we'd created a binary data target, we'd link to it here
        juce::juce_audio_utils
        juce::juce_dsp)

I see that the Binary data .o file is being compiled properly.

My question is… How can I now access this bynary data on source code?

BinaryData::whatever does not work any more.

If you’re using a JuceHeader, then the binary data header should be automatically included in there. If you’ve opted to avoid the JuceHeader (recommended), you can just #include BinaryData.h in the places that you need it.

Let me know if that doesn’t work, and I’ll try to find out what’s going wrong.

Yes, it worked!
The IDE was marking the BinaryData in red as unresolved symbol, which was confusing me but when I compile, it works, so I guess it’s the IDE not being able to resolve symbols.
Thanks!

Glad you got it working! This might be because the BinaryData files are generated during the build, so the IDE may not be able to find them until the build has been run once (and even then, some IDEs might need a bit of a nudge to re-index the binary directory…)

2 Likes