Tengo un proyecto de ejemplo que consta de un objetivo principal ( LinkerTests ) y un marco dinámico dependiente ( Dynamic ).
Si ejecuta el proyecto, verá la siguiente carga binaria dyld:
dyld: loaded: {DerivedDataPath}/Build/Products/Debug-iphonesimulator/Dynamic.framework/Dynamic Esta carga binaria de dyld ocurre debido a import Dynamic en AppDelegate.swift a pesar de lo siguiente:
Link Binary With Libraries está vacíoCLANG_MODULES_AUTOLINK se establece en falsoLo que necesito lograr es evitar este enlace implícito automático. es posible? ¡Gracias por adelantado!
Pregunta relacionada: ¿Ya no necesitamos vincular el marco al proyecto XCode?
Aparentemente, esta característica se llama enlace automático. El compilador de Swift emite implícitamente banderas de enlazador adicionales que enlazan en todos los módulos de los que depende el código fuente ( import Dynamic ).
No hay forma de desactivar esto por completo. Pero hay un indicador de compilador privado que le permite deshabilitar el enlace automático para un solo marco: swiftc -disable-autolink-framework <framework> .
Algunas referencias: https://gist.github.com/zrzka/c89705ff634ea01aebc1 https://github.com/niw/automatic_linking_tool/blob/master/README.md
Estoy bastante seguro de que puede agregar -v a swiftc e imprimirá todas las invocaciones subyacentes como comandos. Con suerte, también podrá ver las invocaciones del enlazador.
Debe envolver la bandera privada dentro de dos banderas -Xfrontend para permitir su uso:
OTHER_SWIFT_FLAGS = "-Xfrontend -disable-autolink-framework -Xfrontend Dynamic"Para que esto surta efecto, aún debe configurar Link Frameworks Automatically No en Apple Clang - Idioma - Módulos.