【发布时间】:2015-08-26 05:17:27
【问题描述】:
我如何设置一个文件,比如 .h 或 .m(准确地说是 .cpp)以仅在设备上构建而不是在模拟器上运行时构建?这适用于 Xcode 6.4。这些文件在模拟器上运行时会抛出错误,因为它不支持架构。
编辑
是否有编译器标志只在 ARM(设备)而不是 i86(模拟器)上构建文件
【问题讨论】:
标签: c++ ios xcode compiler-errors compiler-flags
我如何设置一个文件,比如 .h 或 .m(准确地说是 .cpp)以仅在设备上构建而不是在模拟器上运行时构建?这适用于 Xcode 6.4。这些文件在模拟器上运行时会抛出错误,因为它不支持架构。
编辑
是否有编译器标志只在 ARM(设备)而不是 i86(模拟器)上构建文件
【问题讨论】:
标签: c++ ios xcode compiler-errors compiler-flags
您可以将文件包装在方法中,然后将方法包装在以下内容中:
#if TARGET_IPHONE_SIMULATOR
-(void)doSomethingUsingSimulatorOnly {
//do work
}
#endif
其他
#if TARGET_IPHONE_SIMULATOR
// do stuff when running on Simulator
#elif TARGET_OS_IPHONE
// do stuff when running on actual device
#endif
你也可以这样做:
if (TARGET_IPHONE_SIMULATOR) {
}
这是您可以尝试的另一个包装器:
#if defined(__cplusplus) || defined(c_plusplus)
#endif
或
#ifdef __OBJC__
#endif
所以,你可以用一堆不同的方法来做到这一点,最后一种方法最容易使用,但每个人的口味不同。
此外,这是 Apple 在最新的 Metal 示例中使用的 sn-p,我认为这对您有用,也许可以将其用作示例。这是来自用于 Metal Video 处理的“.mm”文件,它的基本格式与上面相同:
#ifdef __cplusplus
#endif // cplusplus
【讨论】: