我试图在Xcode的编译器宏定义,它依赖于一个简单的系统shell命令通过。
我想的第一件事就是将它添加到在构建Phases-特定文件>这样进行编译来源:
让我吃惊的是没有工作,所以我尝试这样做:
此正确地打印出来的值,但是该宏未传递给源文件中正确。 我想这一个没有工作,因为它会创建一个独立的shell实例,因此环境变量不保存到编译阶段。
我试图做一个谷歌搜索和寻找周围的StackOverflow,以及,我发现的唯一有希望的事情是这一点,这似乎并没有有一个有效的解决方案: XCode的C / C ++旗bash脚本
我写的代码如下所示:
#define STRINGIFY(X) #X
#define TOSTRING(X) STRINGIFY(X)
#define AT __FILE__ ":" TOSTRING(__LINE__)
NSString* getBuildHash()
{
return [NSString stringWithCString:TOSTRING(GIT_COMMIT_HASH) encoding:NSASCIIStringEncoding];
}
任何帮助将不胜感激:)谢谢!
这里有一个想法,可能会有所帮助:
在shell脚本(在构建阶段的“运行脚本”),而不是设置环境变量,写你的价值,这已经包含在项目中的文件。 为了更方便您可以使用构建阶段刚刚启动另一个shell脚本,将做的工作。
例如,可以有一个包含一个限定头文件(或一个静态变量): #define kObjCFlags @"MY_FLAGS"
。 您的脚本将注入和每次运行时(使用正则表达式替换字符串只是内容)取代的价值。
由于这是该项目的一部分,你可以简单地导入和你需要的地方使用它。 此外,它并不一定是一个头文件 - 它可以是一个纯文本文件,或者你可以从代码读取的plist。
所以,感谢https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/我能解决这个问题!
投入情况下,其他任何人的Xcode 6在这里简单的步骤运行到这...
第1步:
点击目标和下编阶段的新运行脚本阶段点击加号下。
我用下面的脚本:
LLVM_XCCONFIG="llvm.xcconfig"
BUILD_INFO="-DGIT_COMMIT_HASH="`git rev-parse --short HEAD`
echo "// Configuration file for LLVM settings, generated as a build phase." > $LLVM_XCCONFIG
echo "BUILD_INFO = $BUILD_INFO" >> $LLVM_XCCONFIG
# Force clang to rebuild the file
touch libUtils/BuildInfo.m
第2步:
它发扬光大! 产品 - > 构建由此,在项目目录中llvm.xcconfig文件:
第3步:
通过右键点击目标和击中.xcconfig添加到项目中添加文件“”
第四步:
在目标设置, 生成阶段窗格中下,下上编译源代码适当的源双击并添加$(BUILD_INFO)
为文件的编译器标志。
第5步:
转到项目设置(不是目标设置!)。 它应该让你的信息面板中。 在配置下设置调试和发布使用“LLVM”配置。
在此菜单下,您可能还需要移动llvm.xcconfig 复制包资源的目标。
第6步:
你完成了!! 尝试建设,并确保所有的工作:)