在Xcode使用bash编译标志(Compilation flags using bash in X

2019-10-24 00:58发布

我试图在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];
}

任何帮助将不胜感激:)谢谢!

Answer 1:

这里有一个想法,可能会有所帮助:

在shell脚本(在构建阶段的“运行脚本”),而不是设置环境变量,写你的价值,这已经包含在项目中的文件。 为了更方便您可以使用构建阶段刚刚启动另一个shell脚本,将做的工作。

例如,可以有一个包含一个限定头文件(或一个静态变量): #define kObjCFlags @"MY_FLAGS" 。 您的脚本将注入和每次运行时(使用正则表达式替换字符串只是内容)取代的价值。

由于这是该项目的一部分,你可以简单地导入和你需要的地方使用它。 此外,它并不一定是一个头文件 - 它可以是一个纯文本文件,或者你可以从代码读取的plist。



Answer 2:

所以,感谢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步:

你完成了!! 尝试建设,并确保所有的工作:)



文章来源: Compilation flags using bash in Xcode