c++ header cross-compiling

C++ Incluye desde Internet



header cross-compiling (2)

Quiero incluir un encabezado de internet. Por ejemplo: el archivo add.h y add.cpp se han publicado en github.com

el archivo add.h es int add (int a, int b);

el archivo add.cpp es int add (int a, int b) {return a + b;}

en mi main.cpp quiero el código como este

#include "github.com/xxx/add.h" int main(){ int a = add(1,1); }

Cuando comience la compilación, el compilador puede descargar automáticamente add.cpp desde github.com

¿Puede pasar esto?


No, no va a suceder (suponiendo que no estés usando algún tipo de maquinaria de búsqueda). El preprocesador solo incluye archivos locales con una directiva #include .

C ++ no funciona como Go o Javascript

Los archivos alojados en github están destinados a ser revisados ​​usando git y luego utilizados.

Recomiendo leer un libro de C ++ y un libro de Git antes de continuar (o su compilador / manual del sistema de compilación para agregar pasos adicionales de búsqueda)


C ++ no es compatible con esa característica de forma nativa. Tendría que construirlo usted mismo.

Podría agregar un paso adicional a su sistema de compilación que

  1. analiza su código fuente para incluye como el de su ejemplo anterior
  2. descarga los archivos incluidos (y también se requiere *.cpp alguna manera )
  3. genera una versión actualizada de su código fuente que hace referencia a los archivos descargados.
  4. luego continúa la construcción como de costumbre

Esto es mucho trabajo

Mejor mira algo como ExternalProjects of CMake. Esta función puede descargar, crear e instalar dependencias para que su proyecto pueda usarla. Por supuesto, existen tecnologías alternativas (@ comentaristas por favor agregue sus favoritos).

ACTUALIZACIÓN: (gracias @Angew)

Técnicamente, C ++ no especifica cómo se procesa el argumento de una directiva #include. Son todos los compiladores conocidos que "no admiten esta característica de forma nativa", no C ++ en sí. Un compilador que admite esto podría ser totalmente compatible con las normas.