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
- analiza su código fuente para incluye como el de su ejemplo anterior
- descarga los archivos incluidos (y también se requiere
*.cpp
alguna manera ) - genera una versión actualizada de su código fuente que hace referencia a los archivos descargados.
- 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.