ios - 在 Xcode 中使用 bash 的编译标志

标签 ios objective-c xcode xcode6

我正在尝试在 Xcode 中传递依赖于简单系统 shell 命令的编译器宏定义。

我尝试的第一件事是将其添加到“构建阶段”->“编译源”中的特定文件,如下所示:

enter image description here

令我惊讶的是,这不起作用,所以我尝试了这个:

enter image description here

这正确打印了值,但宏未正确传递到源文件。 我认为这个不起作用,因为它创建了一个单独的 shell 实例,因此环境变量不会保留到编译阶段。

我尝试进行 Google 搜索并查看 StackOverflow,我发现的唯一有希望的事情就是这个,它似乎没有有效的解决方案:XCode C/C++ Flags Bash Script

我编写的代码如下所示:

#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];
}

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

最佳答案

所以,感谢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 添加到项目中

第 4 步:

在目标设置中的构建阶段 Pane 下,双击编译源下的相应源并添加$(BUILD_INFO) 文件的编译器标志。

第 5 步:

转到项目设置(不是目标设置!)。它应该会将您带到信息 Pane 。在配置下设置调试发布以使用“llvm”配置。

在此菜单下,您可能还需要移动 llvm.xcconfig 复制捆绑资源目标。

第 6 步:

你已经完成了!尝试构建并确保一切正常:)

关于ios - 在 Xcode 中使用 bash 的编译标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524925/

相关文章:

ios - Google 登录向导不要求添加新帐户或选择现有帐户 - iOS

objective-c - 类常量

ios - 对象数组还有进一步的内部对象数组

ios - Xcode Application Loader 停留在 "Signing in to App Store Connect"

ios - 归档后无法导出开发的iOS应用程序

ios - 在应用程序中启动不同的 ios 应用程序

ios - TapGesture 添加到 UIView+SomeCategory。我如何使用这个添加到我的 UIViewController 的 UIView?

ios - 滑动 View Controller ,但不使用 UISwipeGestureRecognizer

ios - UIimage 不显示重复方法的图像

ios - UIScrollView内的UILabel上的触摸检测