studio programar para ndk library configurar c++ windows dependencies cmake

programar - ¿Cómo descargar automáticamente las dependencias de C++ de forma multiplataforma+CMake?



configurar ndk android studio (4)

La mejor manera de lograr esto es eliminar sus dependencias.

Las dependencias son malvadas.

Elimínalos en lugar de depender de ellos.

Seriamente

Básicamente quiero lograr este flujo de trabajo:

  1. Checkout desde el repositorio en el sistema de Windows (o cualquier plataforma para el caso).

  2. Ejecute alguna herramienta que obtenga dependencias, tanto las incluye como las libretas, y las coloque en su lugar adecuado (como en "/ Archivos de programa / Microsoft Visual Studio 10.0 / VC / Lib y / Incluye" en Windows)

  3. Ejecutar CMake (crea proyectos MSVS en win)

  4. Abre el proyecto MSVS y compílalo.

Y me gustaría tener este flujo de trabajo en la mayoría de las plataformas.

No quiero tener que descargar dependencias manualmente.

¿Cómo hacer esto sin almacenar dependencias en el repositorio? ¿Cuál es la mejor manera de lograr esto?


La mejor manera de lograr esto es eliminar sus dependencias.

Las dependencias son malvadas.

Elimínalos en lugar de depender de ellos.

Seriamente.

No desea descargarlos manualmente, no quiere almacenarlos en su repositorio, sus clientes no quieren descargarlos por usted. De hecho, tu compilador ni siquiera quiere compilarlos.

Prefiere cambiar a java para agregar una dependencia de biblioteca C ++ ...

Mientras tanto, la sugerencia de revisar el módulo ExternalProject de CMake es lo más cerca que se acercará a una dependencia de almacenamiento automático no dependiente almacenada en el repositorio pronto con una compilación basada en CMake .


Hunter es un sistema basado en CMake 3 para la gestión de dependencias. Funciona bastante bien, pero aún no tiene muchos paquetes. Si los paquetes que necesita todavía no forman parte del sistema, se pueden agregar de manera bastante simple, asumiendo que también están basados ​​en CMake.


En CMake, puede usar el file(DOWNLOAD URL PATH) para descargar un archivo , combínelo con comandos personalizados para descargar y desempaquetar:

set(MY_URL "http://...") set(MY_DOWNLOAD_PATH "path/to/download/to") set(MY_EXTRACTED_FILE "path/to/extracted/file") if (NOT EXISTS "${MY_DOWNLOAD_PATH}") file(DOWNLOAD "${MY_URL}" "${MY_DOWNLOAD_PATH}") endif() add_custom_command( OUTPUT "${MY_EXTRACTED_FILE}" COMMAND command to unpack DEPENDS "${MY_DOWNLOAD_PATH}")

Su destino debe depender de la salida del comando personalizado, luego, cuando ejecute CMake, el archivo se descargará, y cuando genere, extraiga y use.

Todo esto podría estar envuelto en una macro para que sea más fácil de usar.

También puede considerar el uso del módulo ExternalProject CMake, que puede hacer lo que quiera.