rorywalsh/cabbage

Failed build on Ubuntu 18.04

Closed this issue · 7 comments

What I did:

Result: about 3800 lines of output, including:

Compiling BinaryData.cpp
Compiling include_juce_audio_basics.cpp
Compiling include_juce_audio_devices.cpp
In file included from ../../Source/Widgets/CabbageWidgetData.h:24:0,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../Source/Widgets/../Utilities/CabbageUtilities.h: In static member function ‘static void CabbageUtilities::writeValueTreeToFile(juce::ValueTree, juce::String)’:
../../Source/Widgets/../Utilities/CabbageUtilities.h:1093:53: warning: ‘bool juce::XmlElement::writeToFile(const juce::File&, juce::StringRef, juce::StringRef, int) const’ is deprecated [-Wdeprecated-declarations]
data->writeToFile (File (filePath), String());
^
In file included from ../../JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h:65:0,
from ../../JuceLibraryCode/modules/juce_core/juce_core.h:196,
from ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Widgets/../Utilities/CabbageUtilities.h:25,
from ../../Source/Widgets/CabbageWidgetData.h:24,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h:715:27: note: declared here
JUCE_DEPRECATED (bool writeToFile (const File& destinationFile,
^
../../JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h:270:57: note: in definition of macro ‘JUCE_DEPRECATED’
#define JUCE_DEPRECATED(functionDef) functionDef JUCE_DEPRECATED_ATTRIBUTE
^~~~~~~~~~~
../../Source/Widgets/CabbageWidgetData.cpp: In static member function ‘static void CabbageWidgetData::setColourArrays(juce::StringArray, juce::ValueTree, juce::String, bool)’:
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: ‘juce::var::var(const void*)’ is private within this context
newColours.append (new Colour (0, 0, 0));
^
In file included from ../../JuceLibraryCode/modules/juce_core/juce_core.h:276:0,
from ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Widgets/../Utilities/CabbageUtilities.h:25,
from ../../Source/Widgets/CabbageWidgetData.h:24,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h:322:5: note: declared private here
var (const void*) = delete;
^~~
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: use of deleted function ‘juce::var::var(const void*)’
newColours.append (new Colour (0, 0, 0));
^

I wonder if this is a mismatch between Cabbage and JUCE versions? Is there a specific version of JUCE that's known to work? Thanks for any advice you can offer.

Thanks, that was quick!

Getting there. I can compile the develop branch, with a few errors relating to the lack of the VST2 SDK (a quick google search suggests that such a thing no longer exists). It's not clear from the readme whether the VST SDK is an essential dependency, or whether it's only needed to be able to export plugins.

In any case, I now have an executable called CabbageLite. It pops up a main window that's tiny (less than 100 pixels square), but I can see an "options" button, and I can use it to load and play a Csound file. But that's as far as it goes.

This issue just came up on the forum. You can build the Cabbage IDE without the VST 2.4 SDK. Here's how:
https://forum.cabbageaudio.com/t/version-2-3-44-loses-audio-input/1940/13

OK, good to know. Can you be a bit more specific with the instructions? I'm working on a Linux command line, encountering JUCE for the first time, and there's nothing in front of me that looks like the linked screen shot.

When I open CabbageIDE.jucer with a text editor, it's a mess of XML, but I can find the line JUCE_PLUGINHOST_VST="1". Do I change 1 to 0 and then recompile Cabbage? Or does JUCE contain a tool for editing the build configuration in a nicer way? Or am I totally on the wrong track here?

The .jucer file should probably be opened with the Projucer application. It basically sets a load of preprocessors in the JuceLibrary/AppConfig.h file. If you edit the .jucer xml, you will need to generate the project make files again. It might easier to simply modify the AppConfig.

If you like you can try a precompiled binary for Linux. It requires that you have Csound installed already. If you click on the 'drop' link here you will get access to a .deb installer. It's still a work in progress, and I'm not sure the desktop shortcuts work. But you should be able to run 'C'abbage from the command line - note the uppercase C.

Thanks! The binary works for me. (I don't care about the desktop shortcuts, I never use those things.) I've found the example files at /usr/share/doc/cabbage/Examples and opened up a few of them to check that I can play sounds and click on widgets. Looking good! Now to start actually learning Csound properly...

(Also, I did figure out how to open up the .jucer file in Projucer and change the configuration. I was able to get a few different compiler errors, but not a successful build. Projucer is unlike other build tools that I've used: the buildCabbage script doesn't actually stop when it hits an error, but keeps filling my screen with thousands of lines of output, so it's hard to tell what's actually going on. But I'm happy to leave it alone for now and play with the version you just gave me.)

PS for anyone else who clicks on that drop link -- I was initially nervous about the large size of the download (a little over 200Mb), but it turns out to include all three of Linux, Windows and Mac installers in one zip file. Not sure why the Mac version is bigger than the other two put together, but it's not a problem.