swift - library - Genere una interfaz rápida desde el encabezado de Objective-C desde la línea de comando
swift version (1)
Invocar el comando de intérprete :type lookup
en el módulo que está intentando inspeccionar.
Supongamos que tiene un archivo de encabezado llamado header.h
. Póngalo en un directorio separado, para que el intérprete lo reconozca como un módulo. También crea un modulemap en el mismo directorio. Llamemos a este directorio Mod
:
./
./Mod/
/header.h
/module.modulemap
Rellene el modulemap con lo siguiente:
module Mod {
header "./header.h"
export *
}
Una vez hecho esto, ejecute un comando como este:
echo "import Mod/n:type lookup Mod" | swift -I./Mod | tail -n+2 >| generated-interface.swift
Alternativamente, puede usar un comando como este con el mismo efecto:
echo "import Mod/n:print_module Mod" | swift -deprecated-integrated-repl -I./Mod >| generated-interface.swift
Se desglosa de la siguiente manera:
- En primer lugar, hacemos un eco del script que se va a ejecutar: importar el módulo y buscarlo;
- luego lanzamos el intérprete y le introducimos el script; El argumento
-I
ayuda a encontrar nuestro módulo, que es crucial; - luego cortamos la parte "Bienvenido a Swift" con Tail
- y escribe el resultado en
generated-interface.swift
.
Mientras ejecuta los comandos anteriores, asegúrese de que su directorio de trabajo esté configurado en un nivel más alto que el directorio Mod
.
Tenga en cuenta que la salida podría no ser exactamente igual a la de Xcode, pero es muy similar.
Solo para el registro, si desea producir la interfaz a partir de un archivo Swift, entonces es solo esto:
swiftc -print-ast file.swift
En Xcode, para cualquier encabezado de Objective-C, podemos ver la Interfaz generada , que muestra cómo Swift lo ve en la interoperabilidad.
Me gustaría generar eso desde la línea de comando . ¿Alguna idea de cómo hacerlo?
Tarea de bonificación: el encabezado debe precompilarse primero, por lo que todos los #import
s deben reemplazarse ya.