dev compiler best c++ compilation open-source

c++ - best - gcc compiler



C++ cómo administrar las dependencias(use las bibliotecas de github, por ejemplo) (4)

C ++ lamentablemente no tiene un administrador de paquetes para las bibliotecas. Algunos están por ahí y tratan de ser uno que todavía son pequeños y dispersos (como conan).

En Linux tienes algunos paquetes "-dev" que puedes instalar pero que tampoco son "todos".

Lo más probable es que termine descargándolos usted mismo. A continuación, sin embargo, tiene el problema de integrar esas bibliotecas. Tiene diferentes sistemas de compilación por sistema operativo, por lo que debe ver cómo crea archivos c ++.

Al igual que en Windows con Visual Studio, tienes que obtener un proyecto de estudio visual o un makefile compatible con nmake para compilar las bibliotecas y luego agregarlas a tu proyecto. Lo mismo con los archivos make de Linux.

Hay varios frameworks de compilación que tienen un nivel más alto como cmake . El ejemplo que tienes en tu publicación también funciona con CMake. Entonces, integrarlo en un entorno de construcción cmake sería más fácil, pero esto solo se aplica a otras bibliotecas que también intenten usar / integrar entornos de compilación de cmake (por ejemplo, boost / qt está haciendo esto).

Sí, estos son algunos pensamientos para esto. Lamentablemente, no habrá una respuesta fácil / definitiva porque no existe un repositorio central de paquetes c ++ que también esté integrado en un sistema de compilación.

Soy muy nuevo en el mundo de C ++, así que, por favor, discúlpame por una pregunta tan falsa. Googleé un poco, pero no pude encontrar la respuesta adecuada.

Mi pregunta es bastante simple: ¿cómo debo usar lib''s en el mundo C ++? Por ejemplo, en Java, hay maven y gradle para esta tarea. En Python: uso pip . En javascript, npm y npm hacen todas las cosas. En C #, utiliza nuget o simplemente agrega DLL lib a su proyecto. Pero parece que en C ++ las cosas no son tan fáciles.

Encontré una herramienta, llamada conan pero la cantidad de libs que tienen es bastante pequeña y no incluyen nada de lo que estoy buscando.

Entonces, por ejemplo, quiero usar nlp lib meta . Parece que no proporcionan ningún archivo instalador. Así que supongo que necesito obtener fuentes de github. ¿Debo compilarlos y luego intentar agregar archivos compilados a mi proyecto o necesito tener una carpeta lib en mi proyecto, y poner meta''s fuentes meta''s en esa carpeta y luego operar con meta''s fuentes meta''s como están en mi proyecto?

Mi pregunta no es sobre cómo instalar una meta específica, sino más desde el punto de vista de la administración de la fuente. Si utilizo Visual Studio en Windows por ejemplo, pero mi colegue codificará Clion en Linux . Y no quiero darme cuenta de cuál es la forma adecuada de administrar las dependencias en el mundo C ++.


Hay una serie de populares C ++ lanzados a través de paquetes Nuget . Puede buscarlas en la galería, generalmente usando las etiquetas native o de c++ . Obviamente necesita un administrador de nuget para su sistema operativo, y estoy bastante seguro de que los paquetes nuget de C ++ confían en MSBuild para una gran parte del trabajo, por lo que puede tener problemas para lograr que una configuración no orientada a Visual Studio funcione correctamente.

Además, Gradle también tiene algo de apoyo para las dependencias nativas . Eché un vistazo hace poco pero el trabajo sobre él se redujo porque faltaba el soporte para VS 2015.


C ++ no tiene nada como pip o npm/bower . No sé si maven o gradle pueden ser persuadidos para manejar bibliotecas C ++.

En general, vas a tener que terminar con

  • Archivos de encabezado en un directorio en algún lugar
  • archivos de biblioteca (bibliotecas estáticas o DLL / objetos compartidos). Si la biblioteca es solo una biblioteca de encabezado como algunas de las bibliotecas de refuerzo, entonces no la necesitará.

Puede obtener los archivos de la biblioteca, ya sea compilándolos en su máquina (típico para proyectos de código abierto y proyectos dirigidos a plataformas Linux), o descargando los archivos binarios precompilados (típicos para las bibliotecas de Windows, especialmente los pagos).

Con suerte, las instrucciones para construir la biblioteca se incluirán en el sitio web de la biblioteca. Como se señaló en los comentarios, "meta" parece ser bastante bueno en eso.

Cuando intente compilar con la biblioteca, puede necesitar una opción de línea de comando (por ejemplo, -I ) para especificar el directorio que contiene los archivos de encabezado, y puede necesitar una opción de enlazador (por ejemplo, -l ) para decirle al enlazador que vincule con su biblioteca.


Cget instalará cualquier paquete que use cmake estándar, y funcione para Linux y Windows. Se ha acortado la sintaxis para obtener paquetes directamente desde github (como cget install google/googletest ).

Además, las dependencias también pueden descargarse automáticamente al listarlas en un archivo requirements.txt .

También hay recetas para instalar paquetes que no son cmake y el repositorio aquí tiene más de 300 bibliotecas (y en crecimiento). Entonces puedes instalar curl con solo cget install pfultz2/cget-recipes curl .