Projucer not setting Base and Target and loads of errors

Hi. My Mac project is not allowing me to set 10.8 base SDK as my previous project did. I think everything is the same, apart from including juce_dsp module. In which I’m also getting errors complaining about

 'redefinition of 'complex' as a different kind of symbol' vForce.h

Which might be a clue, has anyone seen this before?
And yes I’ve upgraded the C++ to 14 as it directed.
This is with 5.4.1 of projucer - freshly built from the github master.

Are you not able to set the base SDK in the Projucer or is it not being set in Xcode correctly? You’ll need to have the SDK installed on your machine for Xcode to pick it up correctly.

As for the complex symbol collision, you can see that we guard against it in the juce_dsp header here so I’m not sure why the compiler is complaining. Have you added any additional libraries to the project?

Thanks for replying. My previous project compiles and runs fine with 10.8 base and 10.7 target using the same Projucer, and yes it sets it OK but it doesn’t set it in Xcode 9.4.1, it’s completely bonkers.

If I add juce_dsp to my other project I get the same errors.
There are no other libraries or modules other than the standard ones and juce_dsp.
One later error is in ‘juce_SpecialFunctions.cpp’ - I’m getting a

 'No template named 'complex'; did you mean Complex'? 
  • with a capital ‘C’,

The errors I’m getting at he top of vForce are

Explicit specialization of non template class 'complex'
&
Redefinition of 'complex' as different kind of symbol

You’ll need to use a newer version of the OSX SDK to build the dsp module in order to use the C++14 features, I believe 10.11 is the furthest back you can go. You will still be able to set a deployment target down to 10.7 though.

1 Like

You’ll need to edit the .plist file located in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist and change the MinimumSDKVersion if you want to use earlier SDKs. Otherwise Xcode will just say that it can’t find the SDK, even if you have it in the correct folder.

Thanks, yeah I’ve been using 10.7 target and 10.8 sdk in my last three products that are on sale right now. So 10.11 is the earliest? OK I’ll try that.

Very helpful, thanks. Any idea where I can get the 10.11 SDK from? I can’t see it on the ‘More downloads for Apple Developers’ list.
I’m just getting Xcode 7.3.1 - I presume it’s in there?

Yeah Apple don’t make it particularly easy. You’ll need to download a version of XCode which comes with the 10.11 SDK (Xcode 7 I think?) from https://developer.apple.com/download/more/ and then copy it across from /Applications/Xcode_7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk into your current Xcode’s contents.

Yep, I’m getting 7.3.1 all 5 gigs of it! LOL.
I’m still amazed I can use 10.11 for 10.7 though. Very good though. :slight_smile:

This is a really useful table for comparing Xcode and macOS SDK versions -

1 Like

It’s compiling BUT I have to set the SDK myself in XCode everytime I export the Jucer file. This is the said Jucer file… When it goes into XCode it’s set to ‘latest sdk’ and deployment 10.13

<?xml version="1.0" encoding="UTF-8"?>

<JUCERPROJECT id="FbR61O" name="DiamondViper" projectType="audioplug" jucerVersion="5.4.1"
              pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"
              pluginAUMainType="'aumu'" pluginVSTCategory="kPlugCategSynth"
              pluginFormats="buildAAX,buildAU,buildVST,buildVST3" companyName="QuikQuak"
              companyCopyright="(C)2018 David J. Hoskins" companyWebsite="www.quikquak.com"
              companyEmail="[redacted]@quikquak.com" pluginVST3Category="Fx" reportAppUsage="0"
              pluginManufacturerCode="QkQk" pluginCode="DiVp" aaxIdentifier="com.quikquak.diamondviper"
              pluginAAXCategory="2048">
  <MAINGROUP id="WhpwQV" name="DiamondViper">
    <GROUP id="{8176543F-36D5-F196-0CBA-2E62CB26DF86}" name="Resources">
      <FILE id="rPwNEi" name="Saw_Butt.png" compile="0" resource="1" file="Resources/Saw_Butt.png"/>
      <FILE id="rTRpgd" name="Sine_Butt.png" compile="0" resource="1" file="Resources/Sine_Butt.png"/>
      <FILE id="nKx8vj" name="Square_Butt.png" compile="0" resource="1" file="Resources/Square_Butt.png"/>
      <FILE id="gBioXZ" name="Triangle_Butt.png" compile="0" resource="1"
            file="Resources/Triangle_Butt.png"/>
      <FILE id="xtPqNC" name="Futura Medium.ttf" compile="0" resource="1"
            file="Resources/Futura Medium.ttf"/>
      <FILE id="KowBD6" name="Button_Off.png" compile="0" resource="1" file="Resources/Button_Off.png"/>
      <FILE id="MbSxxo" name="Button_On.png" compile="0" resource="1" file="Resources/Button_On.png"/>
      <FILE id="PDEile" name="DisplayPanel.png" compile="0" resource="1"
            file="Resources/DisplayPanel.png"/>
      <FILE id="aT2ZFE" name="DV_background.png" compile="0" resource="1"
            file="Resources/DV_background.png"/>
      <FILE id="nAwdGn" name="Filter_group.png" compile="0" resource="1"
            file="Resources/Filter_group.png"/>
      <FILE id="FpC4Ch" name="Filter_Off.png" compile="0" resource="1" file="Resources/Filter_Off.png"/>
      <FILE id="O84Q7s" name="Filter_On.png" compile="0" resource="1" file="Resources/Filter_On.png"/>
      <FILE id="DreGyj" name="Horizontal_Puck.png" compile="0" resource="1"
            file="Resources/Horizontal_Puck.png"/>
      <FILE id="FwIptD" name="Keyboard.png" compile="0" resource="1" file="Resources/Keyboard.png"/>
      <FILE id="iMeaS2" name="LFO_Off.png" compile="0" resource="1" file="Resources/LFO_Off.png"/>
      <FILE id="lPEMJm" name="LFO_On.png" compile="0" resource="1" file="Resources/LFO_On.png"/>
      <FILE id="Zl708i" name="OSC_Group.png" compile="0" resource="1" file="Resources/OSC_Group.png"/>
      <FILE id="ww4Est" name="OSC_Off.png" compile="0" resource="1" file="Resources/OSC_Off.png"/>
      <FILE id="e3NKH4" name="OSC_On.png" compile="0" resource="1" file="Resources/OSC_On.png"/>
      <FILE id="u0fEwN" name="Vertical_Puck.png" compile="0" resource="1"
            file="Resources/Vertical_Puck.png"/>
    </GROUP>
    <GROUP id="{2EFA0762-BA12-85FD-D477-9D21D822A9D3}" name="Source">
      <FILE id="xjhB4R" name="ViperSynthesiser.h" compile="0" resource="0"
            file="Source/ViperSynthesiser.h"/>
      <FILE id="I2UvzP" name="ComboLookAndFeel.h" compile="0" resource="0"
            file="Source/ComboLookAndFeel.h"/>
      <FILE id="EtzMHh" name="ADgraphic.h" compile="0" resource="0" file="Source/ADgraphic.h"/>
      <FILE id="JKZB2e" name="MainPanel.h" compile="0" resource="0" file="Source/MainPanel.h"/>
      <FILE id="RwAByo" name="UI_OscGroup.h" compile="0" resource="0" file="Source/UI_OscGroup.h"/>
      <FILE id="ewJ4BR" name="UI_GroupBase.h" compile="0" resource="0" file="Source/UI_GroupBase.h"/>
      <FILE id="ofvor2" name="UI_FilterGroup.h" compile="0" resource="0"
            file="Source/UI_FilterGroup.h"/>
      <FILE id="uRaJe5" name="SnapSlider.h" compile="0" resource="0" file="Source/SnapSlider.h"/>
      <FILE id="m09U5t" name="SimpleEQ.h" compile="0" resource="0" file="Source/SimpleEQ.h"/>
      <FILE id="tyeRis" name="SliderLookAndFeel.h" compile="0" resource="0"
            file="Source/SliderLookAndFeel.h"/>
      <FILE id="QP0G01" name="DiamondLadder.h" compile="0" resource="0" file="Source/DiamondLadder.h"/>
      <FILE id="XH7PFd" name="Dosc.h" compile="0" resource="0" file="Source/Dosc.h"/>
      <FILE id="QSZ3TC" name="juceFHT.cpp" compile="1" resource="0" file="Source/juceFHT.cpp"/>
      <FILE id="DcFxbv" name="juceFHT.h" compile="0" resource="0" file="Source/juceFHT.h"/>
      <FILE id="y9zP1a" name="HalfBandFilter.cpp" compile="1" resource="0"
            file="Source/HalfBandFilter.cpp"/>
      <FILE id="dJB9Bv" name="HalfBandFilter.h" compile="0" resource="0"
            file="Source/HalfBandFilter.h"/>
      <FILE id="VUkpKa" name="ADSR.cpp" compile="1" resource="0" file="Source/ADSR.cpp"/>
      <FILE id="ImwZTD" name="ADSR.h" compile="0" resource="0" file="Source/ADSR.h"/>
      <FILE id="xDgUJ9" name="SynthVoice.h" compile="0" resource="0" file="Source/SynthVoice.h"/>
      <FILE id="OUyubI" name="SynthSound.h" compile="0" resource="0" file="Source/SynthSound.h"/>
      <FILE id="GODVqn" name="PluginProcessor.cpp" compile="1" resource="0"
            file="Source/PluginProcessor.cpp"/>
      <FILE id="F7kxN5" name="PluginProcessor.h" compile="0" resource="0"
            file="Source/PluginProcessor.h"/>
      <FILE id="q5Nqx4" name="PluginEditor.cpp" compile="1" resource="0"
            file="Source/PluginEditor.cpp"/>
      <FILE id="mhIUuK" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/>
      <FILE id="sAUaZF" name="WaveTable.h" compile="0" resource="0" file="Source/WaveTable.h"/>
    </GROUP>
  </MAINGROUP>
  <EXPORTFORMATS>
    <VS2017 targetFolder="Builds/VisualStudio2017" vstLegacyFolder="E:\Plug-ins\SDKs\VST_SDK\VST2_SDK\"
            IPPLibrary="Parallel_Static">
      <CONFIGURATIONS>
        <CONFIGURATION isDebug="1" name="Debug" enablePluginBinaryCopyStep="1" fastMath="1"
                       useRuntimeLibDLL="0" characterSet="MultiByte"/>
        <CONFIGURATION isDebug="0" name="Release" enablePluginBinaryCopyStep="1" useRuntimeLibDLL="0"
                       characterSet="MultiByte" fastMath="1"/>
      </CONFIGURATIONS>
      <MODULEPATHS>
        <MODULEPATH id="juce_core" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_events" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_graphics" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_data_structures" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_gui_basics" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_gui_extra" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_cryptography" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_opengl" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_basics" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_devices" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_formats" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_processors" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_plugin_client" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_audio_utils" path="../../JUCE/modules"/>
        <MODULEPATH id="juce_dsp" path="../../Users/davidhoskins/JUCE/modules"/>
      </MODULEPATHS>
    </VS2017>
    <XCODE_MAC targetFolder="Builds/MacOSX" vst3Folder="/SDKs/VST_SDK/VST3_SDK">
      <CONFIGURATIONS>
        <CONFIGURATION isDebug="1" name="Debug" vst3BinaryLocation="/Library/Audio/Plug-Ins/VST3"
                       auBinaryLocation="/Library/Audio/Plug-Ins/Components" osxSDK="10.11 SDK"
                       osxCompatibility="10.7 SDK" fastMath="1" osxArchitecture="Native"
                       vstBinaryLocation="/Library/Audio/Plug-Ins/VST"/>
        <CONFIGURATION isDebug="0" name="Release" vst3BinaryLocation="/Library/Audio/Plug-Ins/VST3"
                       auBinaryLocation="/Library/Audio/Plug-Ins/Components" osxSDK="10.11 SDK"
                       osxCompatibility="10.7 SDK" osxArchitecture="64BitUniversal"
                       fastMath="1" stripLocalSymbols="1" vstBinaryLocation="/Library/Audio/Plug-Ins/VST"/>
      </CONFIGURATIONS>
      <MODULEPATHS>
        <MODULEPATH id="juce_opengl"/>
        <MODULEPATH id="juce_gui_extra"/>
        <MODULEPATH id="juce_gui_basics"/>
        <MODULEPATH id="juce_graphics"/>
        <MODULEPATH id="juce_events"/>
        <MODULEPATH id="juce_data_structures"/>
        <MODULEPATH id="juce_cryptography"/>
        <MODULEPATH id="juce_core"/>
        <MODULEPATH id="juce_audio_utils"/>
        <MODULEPATH id="juce_audio_processors"/>
        <MODULEPATH id="juce_audio_plugin_client"/>
        <MODULEPATH id="juce_audio_formats"/>
        <MODULEPATH id="juce_audio_devices"/>
        <MODULEPATH id="juce_audio_basics"/>
        <MODULEPATH id="juce_dsp" path="../../Users/davidhoskins/JUCE/modules"/>
      </MODULEPATHS>
    </XCODE_MAC>
  </EXPORTFORMATS>
  <MODULES>
    <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"
            useGlobalPath="1"/>
    <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_core" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_cryptography" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_dsp" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_events" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
    <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
  </MODULES>
  <LIVE_SETTINGS>
    <WINDOWS/>
    <OSX/>
  </LIVE_SETTINGS>
  <JUCEOPTIONS/>
</JUCERPROJECT>

It doesn’t matter what I set MinimumSDKVersion to, it still wants to use the latest. :frowning:

The project base SDK won’t be set, but each of the targets will:

20

1 Like

Oh OK, thanks for spending time looking at that. I find XCode quite baffling at times. So doesn’t matter what the project settings are, they don’t override the targets? Got it.
Thank-you Ed.

Yep. No problem.