Mi proyecto usa CMake para compilar, pero usa la versión local de macOS de clang y ld cuando compila en una Mac.
Después de la actualización a Xcode 11 en MacOS 10.15 Catalina, soy incapaz de enlace con el siguiente error: ld: cannot link directly with dylib/framework, your binary is not an allowed client of /usr/lib/libcrypto.dylib for architecture x86_64
.
¿Está relacionado con la nueva aplicación de notarización? ¿Hay alguna solución que no requiera que el proyecto esté en Xcode (uso CLion para desarrollar en macOS) o que no requiera vincular mi propia compilación de OpenSSL?
Cualquier ayuda apreciada.
Respuestas:
Al encontrarme con este problema esta mañana y al investigar, me encontré con este mensaje del foro de Apple que indica que Apple tiene la intención de que este tipo de bibliotecas se usen solo internamente. El consejo es construir bibliotecas de terceros usted mismo e incluirlas con su aplicación.
fuente
He instalado OpenSSL desde brew, y
find_package
parece detectar la versión de brew, pero intenta vincular el proyecto con el OpenSSL instalado en el sistema, que es LibreSSL.Traté de forzar
find_package
a establecer la ruta exacta de la biblioteca, pero no hace nada:Así que terminé configurando las dependencias manualmente, lo que no es ideal, pero mientras tanto funciona para el desarrollo.
La salida de Cmake proporciona esta información, donde detecta la biblioteca OpenSSL desde la preparación, pero se vincula con la biblioteca del sistema. No estoy seguro de por qué.
¡Espero que esto ayude!
fuente
Esta página me ayudó a resolver el problema de OpenSSL: https://gist.github.com/llbbl/c54f44d028d014514d5d837f64e60bac
Consulte también esta página: https://forums.developer.apple.com/thread/119429
fuente
A medida que el
FindOpenSSL.cmake
código busca las bibliotecas y luego almacena el resultado en la memoria caché de CMake, puede establecer la ruta de forma forzada antes de intentar encontrar OpenSSL. ElFindOpenSSL.cmake
código no reemplazará su ruta.Asegúrese de borrar el caché de CMake, porque una vez que la biblioteca se encuentra con la ruta incorrecta, este truco no lo solucionará, incluso si vuelve a ejecutar CMake en su proyecto.
fuente