在Objective-C项目中,我试图从环境变量中获取文件路径,并将其设置为写入生成文件的位置。这用于在自动化测试环境中使用xcodebuild运行测试代码,其中直到调用xcodebuild才确定文件路径。
为了尝试这样做,我在构建设置中输入了一个预处理器宏,它引用了变量:
BUILDSERVER_WORKSPACE=\@\"$(WORKSPACE)\"
然后使用该宏
设置字符串的值NSString *workspaceLocation = BUILDSERVER_WORKSPACE;
如果$WORKSPACE
的路径的(字符串值)不包含空格,则工作正常但在路径有空格的情况下,宏预处理器将空格视为宏分隔符并尝试处理它们作为单独的宏定义。
例如:
$WORKSPACE=/foo/bar/thudblat
将workspacelocation的值设置为@"/foo/bar/thudblat"
但是
$WORKSPACE="/foo/bar/thud blat"
最终会创建多个预处理器定义:
#define BUILDSERVER_WORKSPACE @"/foo/bar/thud
#define blat"
我试图对路径进行字符串化,但是因为只有当我调用xcodebuild来构建然后运行时才会出现空格,因此我无法使其工作。
最后,我想要的是简单地走$WORKSPACE
处的路径并将其值设置为NSString *workspaceLocation
这样workspaceLocation可能是"\foo\bar\thud blat"