Indudablemente Xojo es la mejor herramienta de programación multiplataforma nativa que se puede utilizar para crear aplicaciones compiladas que funcionen bajo macOS, Windows y Linux a partir de un mismo código fuente; y bajo Web y iOS con ligeras modificaciones. En cualquier caso, utilizando el mismo lenguaje de desarrollo; lo que de por sí ya supone un enorme ahorro de tiempo y, por tanto, rentabilidad. Ahora bien, ¿sabías que más allá del uso de las condicionales de compilación puedes elegir qué elementos han de incluirse por plataforma y arquitectura?
Se trata de la opción de ajustes Avanzados, a la que puedes acceder desde el Panel Inspector haciendo clic sobre la rueda dentada. En ella podemos indicar si queremos que una clase, método, propiedad, estructura, enumeración, delegado o definición de evento sean incluidos o no en cualquiera de las combinaciones disponibles.
Es decir, podemos indicar por ejemplo que se utilice una clase determinada para una compilación del proyecto para Windows y otra distinta si el destino del producto compilado es macOS y Linux; o bien utilizar diferentes enumeradores o estrucutras en función de que la arquitectura de destino para el producto compilado sea de 32 o 64 bits. En fin, las posibilidades de tener esto en cuenta es realmente flexible.
Ten en cuenta que cada vez que añades un nuevo elemento al proyecto estarán marcadas todas las opciones, de modo que deberás de desactivar explícitamente aquellas que no desees contemplar. También has de tener en cuenta que los únicos elementos sobre los que no podrás realizar estas operaciones son las ventanas de los proyectos Desktop, las páginas web en los proyectos Web y las vistas en los proyectos iOS.
Además, por supuesto, podrás utilizar estas capacidades en combinación con las disponibles en el propio lenguaje con las instrucciones de compilación condicional #If… #Else… #Endif
y que se limita a excluir (o incluir) partes del código disponible en un método o evento, o bien diferenciar si el código se está ejecutando desde el IDE en modo de depuración o bien como ejecutable independiente.