soul-lang / SOUL

The SOUL programming language and API
Other
1.71k stars 95 forks source link

soul to juce, compilation errors #27

Closed lucasParis closed 4 years ago

lucasParis commented 4 years ago

I'm trying soul's ClassicRingtone example with the soul to juce command line workflow, and when trying to compile the project in xcode I get a bunch of errors as seen below.

I've been trying to make sense of these errors and for example in the first one, for GeneratedClass::UID, I can't find UID in the ClassicRingtone struct other than in

struct IDs
{
    const juce::Identifier UID      { GeneratedClass::UID }...

full error log:

ClassicRingtone - Shared Code Group
Apple LLVM 9.0 Warning Group
Unknown warning option '-Wzero-as-null-pointer-constant'; did you mean '-Wint-to-void-pointer-cast'?
Unknown warning option '-Winconsistent-missing-destructor-override'; did you mean '-Winconsistent-missing-override'?
Semantic Issue Group
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:687:43: No member named 'UID' in 'soul_import::SOUL_ClassicRingtone'; did you mean simply 'UID'?
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:687:32: 'UID' declared here
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:687:59: Field 'UID' is uninitialized when used here
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:685:12: During field initialization in the implicit default constructor
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:795:52: No member named 'name' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:796:52: No member named 'description' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:798:52: No member named 'category' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:799:52: No member named 'manufacturer' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:800:52: No member named 'version' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:804:72: No member named 'UID' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:805:52: No member named 'isInstrument' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:808:88: No member named 'name' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:813:35: No member named 'name' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:815:32: No member named 'description' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:816:39: No member named 'description' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
.../20_05_20_ClassicRingtoneTest/juceOutput/ClassicRingtone.cpp:1164:67: No member named 'version' in 'soul_import::SOUL_ClassicRingtone'
.../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:10: In file included from .../20_05_20_ClassicRingtoneTest/juceOutput/Main.cpp:14:
lucasParis commented 4 years ago

Here are the generated source files: Archive.zip

julianstorer commented 4 years ago

hmm.. Are you trying to run it on the .soul file rather than a .soulpatch file?

cesaref commented 4 years ago

Yes, I reckon that's the issue. The soul command needs to run on the soulpatch, so something like:

soul generate --juce ClassicRingtone/ClassicRingtone.soulpatch --output=JuceProject

julianstorer commented 4 years ago

Yeah, that'll be it. It's fine to generate raw C++ from a .soul file, but for the juce plugin, it'll only work on a .soulpatch. I'll put in some checks to stop the command line app from letting you do that..

lucasParis commented 4 years ago

O yes that was it. It works now, thanks!