我在命令行中通过 xcodebuild 构建我的项目。不在 xCode 中。我想将一些 marc 传递给项目,以便它可以影响代码。比如下面的代码:
#if (API_TYPE == 1)
#define URL_API @"https://dapi.xxx.com/1.1/"
#elif (API_TYPE == 2)
#define URL_API @"https://tapi.xxx.com/1.1/"
#elif (API_TYPE == 3)
#define URL_API @"https://api.xxx.com/1.1/"
#else
#error "API_TYPE value error! should be only value 1,2,3 !"
#endif
我想在代码文件之外传递 API_TYPE 的定义。比如通过 xcodebuild 命令。
但它不是这样工作的:
xcodebuild -sdk xxx -target xxx SYMROOT=${XCSYMROOT} API_TYPE=${APITYPE}
API_TYPE 的值未更改。但是 SYMROOT 的值被改变了。
那么我怎样才能实现将值传递给 API_TYPE 外部呢?
最佳答案
我知道这是一篇旧帖子,但为什么不直接使用:
xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS API_TYPE=1'
如果您希望能够选择性地覆盖应用程序中的现有定义,只需编写如下代码:
#define DEFAULT_API_TYPE 1
#ifdef API_TYPE
#define REAL_API_TYPE API_TYPE
#else
#define REAL_API_TYPE DEFAULT_API_TYPE
#endif
关于c - 如何将用户定义的宏传递给 xcodebuild?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11927601/