我在命令行中通过 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/

10-12 23:06