Projucer won't build out of the box VS2015

Just did a pull from the dev branch, opened the Projucer VS2015 project and tried to build. Here’s what I got:

c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_GlobalPreferences.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_GlobalPreferences.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_GlobalPreferences.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_GlobalPreferences.cpp)
1>  jucer_JucerDocumentEditor.cpp
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_AppearanceSettings.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_AppearanceSettings.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_AppearanceSettings.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_AppearanceSettings.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\LiveBuildEngine\projucer_CompileEngineClient.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\LiveBuildEngine\projucer_CompileEngineClient.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\LiveBuildEngine\projucer_CompileEngineClient.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\LiveBuildEngine\projucer_CompileEngineClient.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_Main.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_Main.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Application\jucer_Main.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Application\jucer_Main.cpp)
1>  jucer_DependencyPathPropertyComponent.cpp
1>  jucer_Module.cpp
1>  jucer_Project.cpp
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\ComponentEditor\ui\jucer_JucerDocumentEditor.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\ComponentEditor\ui\jucer_JucerDocumentEditor.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\ComponentEditor\ui\jucer_JucerDocumentEditor.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\ComponentEditor\ui\jucer_JucerDocumentEditor.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project\jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project\jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project\jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project\jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp)
1>  jucer_ProjectExporter.cpp
1>  jucer_ProjectSaver.cpp
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2568): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2568): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2643): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2643): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2679): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project\../Project Saving/jucer_ProjectExport_XCode.h(2679): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Module.cpp)
1>  jucer_StoredSettings.cpp
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Project.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Project.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project\jucer_Project.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project\jucer_Project.cpp)
1>  jucer_NewProjectWizardClasses.cpp
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectSaver.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectSaver.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectSaver.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectSaver.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2568): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2568): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2643): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2643): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2679): error C2440: '<function-style-cast>': cannot convert from 'juce::DynamicObject::Ptr' to 'juce::var' (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\project saving\jucer_ProjectExport_XCode.h(2679): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Project Saving\jucer_ProjectExporter.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Utility\jucer_StoredSettings.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Utility\jucer_StoredSettings.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Utility\jucer_StoredSettings.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Utility\jucer_StoredSettings.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Wizards\jucer_NewProjectWizardClasses.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(49): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Wizards\jucer_NewProjectWizardClasses.cpp)
1>c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): error C2440: 'return': cannot convert from 'const juce::Value' to 'juce::var' (compiling source file ..\..\Source\Wizards\jucer_NewProjectWizardClasses.cpp)
1>  c:\users\rory\sourcecode\juce\extras\projucer\source\application\../Project/jucer_DependencyPathPropertyComponent.h(52): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file ..\..\Source\Wizards\jucer_NewProjectWizardClasses.cpp)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

I can’t reproduce this.

I’m already on the develop tip. I deleted extras/Projucer/Builds/VisualStudio2015 and checked it out again, then opened and compiled extras/Projucer/Builds/VisualStudio2015/Projucer.sln with Visual Studio 2015 successfully.

However, I have seen reports of a similar error fairly recently so it would be good to track this down if possible. What version of Visual Studio are you using? I’m on 14.0.25424.00 Update 3.

Hi Tom. Thanks for the prompt reply, as always. I’ll get you those details a little later. It’s a while since I did anything on Windows. I’ll also try to remove my local JUCE repo and download it again fresh. Perhaps there is something funky going on there.

Completely recloning my JUCE repo seems to have got me past that problem. It’s not the first time I’ve been bitten by this. Swithing between dev and master shouldn’t cause such problems. Anyhow, all good now again.

The dev branch won’t build for me. I just did a complete re-clone, switched to the dev branch and hit those same errors I reported above. I forgot to switch to the dev branch the last time I cloned. The master branch builds fine. SOme info for you…

This is really strange as we have a CI system which builds every commit with VS2015. Which project are you building?

The Projucer. Straight out of the box. I simply clone the dev branch, open the Visual Studio 2015 project and try to build. The Juce Demo builds without a problem. Anything I can try here? The master branch Project also builds without a problem.

[p.s.] is there anything I can try with regards to the Visual Studio settings that may make a difference?

Projucer build is failing also in our CI builds on develop tip, and reproducible for me in both VS2013 and VS2015.

Specific versions:

Microsoft Visual Studio Community 2013
Version 12.0.40629.00 Update 5

Microsoft Visual Studio Community 2015
Version 14.0.24720.00 Update 1

For me it works fine on both master and development.

Microsoft Visual Studio Community 2015
Version 14.0.24720.00 Update 1

What I did was

  • pull newest code
  • open the new Projucer.jucer with the previous Projucer version
  • save project
  • open in VS 2015 and build

Maybe this makes a difference and the VS project files are updated?
But still I cannot see any noteworthy differences in the project files after doing this…

We fixed this earlier today. Bit of a strange one though, as it only seemed to fail on some people’s machines.

Great!
In fact I even tried this morning before your fix (“Tidied up some Projucer code that was causing build errors in VS2013/15”) and it worked on my machine.
Really strange one…

Thanks guys. It’s building fine now.

Projucer building fine now, thanks. However, other build issues (warnings) in juce_core, unfortunately even in the tagged 4.3.1 release, will report in separate thread.

Hey. I just updated to Juce 5.0 and am experiencing similar issues. I tried to build the Projucer with Visual Studio 2015 (community edition, 14.0.24720.00 Update 1)) and got these errors:

1>c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(266): error C2440: ‘’: cannot convert from ‘juce::DynamicObject::Ptr’ to ‘juce::var’ (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1> c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(266): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1>c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(295): error C2440: ‘’: cannot convert from ‘juce::DynamicObject::Ptr’ to ‘juce::var’ (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1> c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(295): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1>c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(295): error C2660: ‘juce::DynamicObject::setProperty’: function does not take 1 arguments (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1>c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(299): error C2440: ‘’: cannot convert from ‘juce::DynamicObject::Ptr’ to ‘juce::var’ (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)
1> c:\lib\juce\extras\projucer\source\licenses\jucer_LicenseThread.h(299): note: No constructor could take the source type, or constructor overload resolution was ambiguous (compiling source file …\Source\Licenses\jucer_LicenseController.cpp)

I tried what harryg suggested but that didn’t help.

Update:

I looked at the commit “Tidied up some Projucer code that was causing build errors in VS2013/15” and figured out what to do. It is indeed an easy fix (var (license.get()) instead of var(license)), but I would suggest to also incorporate this in the projucer code ;).

I think this is a VS2015 Update 1 compiler issue. Can you try upgrading to VS2015 Update 3 (I just tried compiling the Projucer with Update 3 and everything works fine).