[quote="Antonio Linares":j83urols]
Que extensión de fichero usas para swift ?
[/quote:j83urols]
Los Archivos swift usan la extension .Swift
[quote="Antonio Linares":j83urols]
Cómo lo compilas ?
Cómo lo enlazas ?
[/quote:j83urols]
Para el experimento he realizado lo siguiente ..
Por un lado he creado dos carpetas nuevas dentro de la estructura de fivemac
una es objs donde van a parar los obj de archivos swift
otra es swift dentro de source que es donde he colocado el archivo swift experimental y donde van a parar los archivos auxiliares generados .
he creado dos archivos nuevos para no molestar demasiado a lo que tenemos en fivemac uno llamado foo.swift que he colocado en la capeta swift y otro llamado swfun.m que he colocado en winapi y que tiene el código para recoger los resultados ...
He modificado nuestro make file añadiendo :
SWIFTFLAGS = -I../include -sdk $(shell xcrun --show-sdk-path -sdk macosx)
una nueva sección ...
SWIFT_OBJS = ./objs/foo.o
y una nueva directiva de compilación
./objs/%.o : ./source/swift/%.swift
if [ ! -d "objs" ]; then mkdir objs; fi
swiftc -frontend -c -color-diagnostics -primary-file $< \
-module-name Bridgette \
$(SWIFTFLAGS) -emit-module -emit-module-path ./source/swift/$*.swiftmodule \
-emit-objc-header-path ./source/swift/$*-Swift.h \
-enable-testing -enable-objc-interop -parse-as-library \
-o $@
if [ ! -d "lib" ]; then mkdir lib; fi
ar rc ./lib/libfivec.a $@
Esto hace que los archivos colocados en la carpeta swift sean compilados , que generen un archivo .o y que generen un archivo cabecera -Swift.h .
Este archivo de cabecera debe incluirse en el archivo .m que quiera usar funciones del archivo swift .
Se tendria que colocar al principio ya que si no esta generado el archivo .o de swift y su cabecera el archivo .m que contenga su código fallará al compilar .
Dentro de swift las funciones a usar las he colocado dentro de una clase publica swift y he creado métodos parta las funciones.
Todo esto es un experimento y está muy verde sobre todo el tema de paso de paramentos y sus tipos .
Apple ha apostado por swift en detrimento de objC , esta claro que se puede mezclar código swift con código objC .
Ya tenemos los comandos para poder compilar desde linea de comandos o desde un makefile .
Swift tiene un metodo relativamente simple para poder usar una función objC dentro de su código y debemos pensar que tanto las funciones internas de Harbour como nuestras funciones C son al final funciones C o lo que es lo mismo ObjC .
Desde una función C también podemos recuperar valores de funciones completas de swift y así poder usarlas dentro de harbour .
Uso simple ( sin usar funciones C dentro de swift )
archivo swfun.m
[code=fw:j83urols][/code:j83urols]
archivo foo.swift
[code=fw:j83urols][/code:j83urols]
↧