繁体   English   中英

在Xcode中创建一个动态预处理器宏

[英]Create a dynamic preprocessor macro in Xcode

我经常在iOS项目和开发服务器一起工作,开发服务器总是运行在我用来构建应用程序的同一台机器上。 一个典型的情况是我有一个在http://localhost:3000上运行的rails应用程序,我正在设备上进行测试。 为了在设备上进行测试,我需要一个已解析的IP地址,以便我的应用可以与本地网络上的开发服务器通信。

我知道我可以使用GCC_PREPROCESSOR_DEFINITIONS将一些环境变量设置为预处理器宏,我知道我可以通过运行ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'来获取构建机器的IP地址ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}' ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}' 在bash脚本中ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'

我想要做的是使用诸如'@"http://${BUILD_MACHINE_IP_ADDRESS}:3000"'类的值在GCC_PREPROCESSOR_DEFINITIONS定义MY_SERVER_URL ,但我无法弄清楚如何使用ifconfig设置${BUILD_MACHINE_IP_ADDRESS}上面的脚本。

我曾考虑使用运行脚本构建阶段编辑配置文件,但这样的更改的后果令人恼火。 例如,我不希望文件包含在源代码管理中,因为我的IP地址频繁更改,这会导致冲突。 但我需要将它包含在项目文件中,以便应用程序可以访问它。 这将导致项目构建所需的文件,但不包含在源代码控制中,这很难看。

我也试过运行export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}` export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}` export BUILD_MACHINE_IP_ADDRESS=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}`运行脚本构建阶段,但不会产生结果。

执行此操作的一种方法是使用运行脚本构建阶段,该阶段编写.h文件,该文件#define是宏并包含在您的源中。

我不相信在构建期间编写.xcconfig会对该构建产生任何影响。

从运行脚本构建阶段导出环境变量不会因多种原因而起作用。 首先,可以从构建设置创建环境变量,但不能以相反的方式工作。 其次,即使他们这样做,子进程也不能在其父进程中设置环境变量。

对于另一种方法,您是否考虑过使用开发机器的.local主机名而不是数字IP地址? 检查“系统偏好设置”的“共享”面板,它将显示系统的域名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM