[fixed] Set CONFIGURATION_BUILD_DIR for Xcode projects

I want to be able to set CONFIGURATION_BUILD_DIR aka "Per-configuration Build Products Path" for Xcode projects from Introjucer. 

I've tried Preprocesser definitions, linker and compiler settings but none of those seemed to work - and when I try setting it in "Custom Xcode flags" the project becomes invalid and doesn't load. 

Custom Xcode flags is the place to put it.

Have a look at the diff when you save the project, to see what it added to the Xcode project file - if it seems to have done the right thing, then maybe the flag itself isn't supported and that's why it says it's invalid?

The setting I need is:

$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

For some reason this breaks the project... Pulled from a default xcode project, works when i enter it into xcode.  

UPDATE: So I realised it needs to be in quotes, i.e: 

CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"

There seems be a bug in the exporter however,  where the default value overrides this setting; when I look in the generated pbxproj file I see:

​
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";

And so in Xcode it still picks up the default. I then have to change it manually to get it to build successfully. 

 

Actually, I think the right place to put this in the Introjucer is the "Binary location" setting, isn't it?

Ok, thanks for the suggestion, however putting in the value I need causes an invalid project. 

The value is

​$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

which is what you get in a default Xcode project (Xcode 7). 

I need this value so that I can build the project with Cocoapod dependencies, so that the dependencies build locations are where Xcode expects them to be. (Or thats how I make sense of it anyway). 

So I’m still hitting this issue, needing to go in and edit this setting in Xcode each time I save the Projucer project for it to complete the linking stage. Any ideas?

Bumping this issue in case its been lost. Would be nice to get this fixed.

Hi @adamski,

I am just changing a few things in the Xcode exporter which may finally fix this bug. Specifically I am now going to use the INSTALL_PATH build setting to tell Xcode where to put the binary, instead of the older DSTROOT/SYMROOT method. Let’s see if it’s going to work.

Sorry for not having replied earlier, it’s not easy to keep track of all the problems reported in this forum…

1 Like

Goes together with: [fixed] AAX plugins created with 4.2 no longer loadable in ProTools development build - cool to hear, that you are on it…

Yes, the one you linked is the one I am actually working on right now, this here might get fixed as a side effect :wink:

1 Like

This bug should finally be fixed now. Please update to the newest tip.

1 Like

Thanks for the update.
Please can you confirm how to set this now - is it in “Custom Xcode Flags” or “Binary Location”?

Binary Location. Which should also now work
with that $(…) Xcode syntax.

1 Like

Happy to report this is now working. Thanks, another manual build step squashed!