cocoa - caracteristicas - Usar marcos en una herramienta de línea de comando
prosumer (3)
A partir de Xcode 9.3.1, pude agregar el marco de trabajo a la herramienta de línea de comando configurando Mach-O Type
en Static Library
para el framework. Luego, en el target
línea de comando, asegúrese de agregar el marco a las Target Dependencies
y al Link Binary With Libraries
Build Phases
Link Binary With Libraries
. El ejecutable incorporado fue capaz de ejecutarse sin problemas.
Construí una utilidad de línea de comandos (herramienta Foundation) en Xcode, usando Cocoa. La herramienta hace uso de un marco de terceros.
Todo funciona bien en Xcode, pero ¿cómo despliego este programa?
Si ejecuto la aplicación desde Finder, no puede encontrar la biblioteca porque está buscando en ../Frameworks/etc.
¿Puedo vincular estáticamente en el marco de terceros?
Desafortunadamente, no hay forma de agrupar un marco con una utilidad de línea de comandos en OS X y sospecho que el marco al que está enlazando espera formar parte del directorio de Frameworks / del paquete de aplicaciones. Si tiene acceso al código fuente de la infraestructura, puede compilar una biblioteca estática y vincularla estáticamente a su aplicación (o incluir directamente la fuente en el destino de la aplicación). Si no tiene el código fuente o no quiere vincular estáticamente la biblioteca por algún motivo, existen dos opciones restantes:
Si tiene acceso a la carpeta de todo el sistema / Biblioteca / Frameworks, puede instalar allí el marco de terceros. Esto requiere que la Ruta de instalación del framework (la
INSTALL_PATH
construcciónINSTALL_PATH
) se establezca en/Library/Frameworks
en tiempo de compilación o que use elinstall_name_tool
para cambiar la ruta de instalación de frameworks a/Library/Frameworks
(si no tiene el origen del framework) código).Cree un paquete de aplicaciones (como si estuviera construyendo una aplicación GUI) con su utilidad de línea de comandos como el ejecutable del paquete de la aplicación (es decir, en AppBundle.app/Contents/MacOS/). A continuación, puede copiar el marco de terceros en el directorio de marcos del paquete de aplicaciones. A continuación, puede colocar el paquete de aplicaciones en el lugar que desee y crear un enlace simbólico a la utilidad de línea de comandos.
La opción 1 es definitivamente el enfoque más aceptado, pero he usado la opción 2 cuando había una razón válida.
Puede encontrar más información sobre creación, enlace e instalación de marcos en la Guía de programación de Frameworks de Apple.
Otra forma, si tiene el código fuente para el marco, es agregar un objetivo de biblioteca estática y crear una lib estática a partir de él. Luego puede vincularlo estáticamente a su herramienta de línea de comandos.