¿Cómo usar la definición __IPHONE_4_0 en una biblioteca C++ con Xcode?

Estoy tratando de desarrollar una biblioteca C ++ para una aplicación iOS. Esta biblioteca carga las funciones GLES y OpenAL. La idea es desarrollar una librería en C++ y usar el mismo código en iOS y Android (ambos como compilación nativa). Solo estoy con la implementación de iOS, y he hecho una aplicación de muestra con la biblioteca y tengo este bloque dentro de la biblioteca:

#ifdef _IPHONE_4_0 #advertencia "Incluido iPhone SDK 4.0 trabajando aquí" // La advertencia de compilación está activa #include #incluir #incluir #incluir ... #elif __ANDROID_API_ // Android #warning "Incluyendo Android trabajando aquí" // La advertencia de compilación no está activa ... #endif

Entonces, el problema viene con la oración "#ifdef _IPHONE_4_0". Si lo uso, Xcode no puede encontrar los archivos de inclusión, pero si comento todos los if cláusula (parte de Android también) Xcode puede encontrarlos todos.

#advertencia frases muestra que el compilador está leyendo la parte del iphone (con y sin líneas comentadas) en tiempo de compilación. ¿Necesito usar la definición de otra manera?

Gracias de antemano!

preguntado el 21 de mayo de 12 a las 11:05

Compruebe el NAMEPROJECT-prefix.pch, debe contener el código original. ¡No cambie el nombre del *.mm! -

1 Respuestas

Mira esta publicación ¿Cómo detectar de forma fiable Mac OS X, iOS, Linux, Windows en el preprocesador C?

Además, como sé, la macro __IPHONE_4_0 se define solo en iOS 4.0 SDK. Por lo tanto, el código no debería funcionar si está utilizando otra versión de SDK.

Otro enfoque es definir su propia macro en la configuración de compilación del proyecto Xcode (campo 'Macros de preprocesadores') y nombrarla IOS_BUILD, por ejemplo. Estará disponible en código Objective-C y C++.

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.