从major / minor / patch / build生成VERSION_STRING定义用于plist

时间:2009-12-08 21:36:58

标签: objective-c c xcode macos plist

我有一个使用预编译头文件处理的plist,其中有“变量”VERSION_STRING在CFBundleGetInfoString等字段中使用了几次,即键CFBundleGetInfoString的值为:MyProduct VERSION_STRING Cop​​yright©2009 MyCorp

在MyHeader.h中(设置为Info.plist前缀标题,我希望能够将VERSION_STRING构建为MAJOR.MINOR.PATCH.BUILD格式

#define MAJOR 1
#define MINOR 0
#define PATCH 0
#define BUILD 23

出于某种原因,我似乎无法做到这一点。我可能只是有其中一个时刻

2 个答案:

答案 0 :(得分:1)

事实证明,实际上有关于此的Apple Tech Note以及我遇到的问题的解决方案。因此,对于任何可能遇到此问题并遇到相同问题的人,我都会查看Technical Note TN2175: Preprocessing Info.plist files in Xcode Using the C Preprocessor

答案 1 :(得分:0)

获取你的plist文件并用额外的扩展名重命名(也许是P?)。将#include "MyHeader.h"添加到文件的开头,并使用C预处理器(通常为cpp)在构建中对其进行预处理。您可能需要过滤掉额外的#行,但我不明白为什么它不起作用。

默认情况下,cpp应输出到stdout,因此添加这样的命令可能会正常工作:

cpp myplist.plist.P | grep -v '^#' > myplist.plist