MSVC build consistency


#1

I've just run into trouble with two object files with the same name in MSVC.  By default MSVC puts all the object files in the same folder which can result in name classes if you have two CPP files with the same name, but in different folders in the source.  This doesn't happen with Xcode, which presumably has some slightly more clever logic. 

Would it be a breaking change to have introjucer put: 

C/C++ -> Output Files -> "Object File Name" to:

$(IntDir)/%(RelativeDir)/

By default into the MS project files? This would make things more consistent cross-platform. 


#2

+1


#3

Seems like a good idea to me too, and shouldn't do any harm. I didn't realise they had a compiler directive that could do this.

I'm a bit busy though - could someone sanity-check the changes that'd be required? It looks like there are several places that would need to be changed, as $(IntDir) is used for a few different things, and it seems like it'd be easy to break something by not changing the correct ones...


#4

While I'm looking at it, is there any reason that enabling AAX and VST causes the output filename to become .aaxplugin rather than .dll.  It's another source of errors it'd be nice to clean up?


#5

Isn't that the correct suffix for an AAX?


#6

It is, but if you've got VST and AAXPLUGIN selected on the Mac you only get a .aaxplugin file and not the DLL.  (And a bunch of warnings from MSVC about the extension being wrong for the type of target too!).

It needs the same approach as the Mac really, build the default then copy it across.  I've not looked into how easy that is yet admittedly.


#7

Ok, I've removed the stuff that sets the extension now - it'll leave it as .dll, and the post-build script already contains some logic that should rename it to .aaxplugin