Вопрос

I took over a project that has several build schemes: demo, release, debug and production. throughout the code.. there are several preprocessor macro if statements ie

#ifdef DEMO
static NSString *const URL_SMART_TAXI      = @"http://demo.theapp.com";
#elif  PRODUCTION
static NSString *const URL_SMART_TAXI      = @"http://prod.theapp.com";
#elif  DEBUG
static NSString *const URL_SMART_TAXI      = @"http://localhost:8000";
#else
static NSString *const URL_SMART_TAXI      = @"http://dev.theapp.com";
#endif

for some reason, this always works when i'm building with a demo scheme or a production one.. but it just doesn't work for debug (whenever I change the scheme and run for debug.. it always skips the debug and goes for the wild card option)..

I looked all over the project and I don't see any special treatment given for demo or production that's not given for debug..

If I run grep -nri %environment% * this is the result:

grep -nri production *
project.pbxproj:2767:               84380FEB1705D3E40085487D /* Production */ = { 
project.pbxproj:2797:                       name = Production;
project.pbxproj:2799:               84380FEC1705D3E40085487D /* Production */ = { 
project.pbxproj:2832:                                       "-DPRODUCTION",
project.pbxproj:2846:                       name = Production;
project.pbxproj:3013:                               84380FEB1705D3E40085487D /* Production */, 
project.pbxproj:3024:                               84380FEC1705D3E40085487D /* Production */, 
xcshareddata/xcschemes/theApp.xcscheme:47:      buildConfiguration = "Production"

grep -nri demo *
project.pbxproj:2685:               6314932116E4F7D000B351CA /* Demo */ = { 
project.pbxproj:2715:                       name = Demo;
project.pbxproj:2717:               6314932216E4F7D000B351CA /* Demo */ = { 
project.pbxproj:2751:                                       "-DDEMO",
project.pbxproj:2765:                       name = Demo;
project.pbxproj:3012:                               6314932116E4F7D000B351CA /* Demo */, 
project.pbxproj:3023:                               6314932216E4F7D000B351CA /* Demo */, 
xcshareddata/xcschemes/theApp.xcscheme:87:      buildConfiguration = "Demo"

grep -nri debug *
project.pbxproj:2848:               847D410E168CBD3700CE1B96 /* Debug */ = { 
project.pbxproj:2863:                                       "DEBUG=1",
project.pbxproj:2879:                       name = Debug;
project.pbxproj:2912:               847D4111168CBD3700CE1B96 /* Debug */ = { 
project.pbxproj:2955:                       name = Debug;
project.pbxproj:2972:                                       "DEBUG=1",
project.pbxproj:3010:                               847D410E168CBD3700CE1B96 /* Debug */, 
project.pbxproj:3021:                               847D4111168CBD3700CE1B96 /* Debug */, 
xcshareddata/xcschemes/theApp.xcscheme:26:      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
xcshareddata/xcschemes/theApp.xcscheme:27:      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
xcshareddata/xcschemes/theApp.xcscheme:29:      buildConfiguration = "Debug">
xcshareddata/xcschemes/theApp.xcscheme:43:      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
xcshareddata/xcschemes/theApp.xcscheme:44:      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
xcshareddata/xcschemes/theApp.xcscheme:49:      debugDocumentVersioning = "YES"
xcshareddata/xcschemes/theApp.xcscheme:72:      debugDocumentVersioning = "YES">
xcshareddata/xcschemes/theApp.xcscheme:84:      buildConfiguration = "Debug">

any ideas?

update: + relevant parts of build settings

enter image description here enter image description here enter image description here

Это было полезно?

Решение

This is because you're doing "#elif", which is NOT the same thing as "#elifdef" (if such a thing exists).

You should define PRODUCTION, DEBUG and DEMO all at the same time, but set only one to "1" and the others to "0".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top