2010-10-26 14 views
8

Vine aquí para hacer esta pregunta porque este sitio me ha sido muy útil en el pasado, parece tener usuarios muy conocedores que están dispuestos a discutir una pregunta, incluso si es metafísico a veces. Y también porque Google no funcionó.¿Hay una biblioteca que pueda compilar C++ o C

Java tiene un compilador y luego tiene una biblioteca JDT que puede compilar java sobre la marcha (por ejemplo, se utiliza en JasperReports para convertir una plantilla de informe en código Java).

Mi pregunta: ¿Alguien sabe de una biblioteca/proyecto que ofrezca compilar como un conjunto de clases de biblioteca en c/C++. Por ejemplo: un conjunto de clases para realizar Preprocesamiento, Análisis, CodeOptimization y, por supuesto, renderización Binaria a imágenes ejecutables como ELF o Win. Básicamente algo que permitiría compilar scriptlets c o C++ como parte de una aplicación.

+1

"y, por supuesto, la representación binaria en imágenes ejecutables como ELF o Win." Esto me confunde un poco; como tal, el sistema no ("entrada del compilador") ¿funciona? –

+2

¿Realmente quieres saber cómo usar C o C++ como lenguajes de scripting? La compilación normalmente se está compilando. O desea obtener un lenguaje de scripting para ejecutar en su aplicación ', o averiguar cómo usar el código de compilación externo – thecoshman

Respuesta

5

Es posible que pueda adaptar algo del proyecto LLVM a sus necesidades.

14

Sí: llvm. En particular, clang. Al menos, así es como anuncian los proyectos. Además, marque this question. Puede ser relevante si decides usar llvm.

4

Puede simplemente requerir que se instale un compilador, luego llamarlo. Este es un requisito bastante considerable, pero sobre la única forma de "incrustar" verdaderamente C o C++. Hay interpreters que puede incorporar, pero actualmente parece ser una mala elección, sobre todo porque las bibliotecas utilizadas en el script deben tener instaladas versiones de desarrollo (es decir, encabezados y bibliotecas compiladas/de origen), y esas bibliotecas podrían ser restringido al conjunto de características admitidas por el intérprete (por ejemplo, calidad de la implementación de la plantilla).

Será mejor que utilices un lenguaje como Python o Lua para incrustar.

+4

¿Por qué downvote? (Realmente quiero saber si hay un problema con mi respuesta.) –

+2

+1 por mencionar a Python como un lenguaje incrustado adecuado.Usar Python en este caso probablemente sea más económico en recursos que compilar sobre la marcha. –

+0

Tal vez su respuesta fue downvoted porque invocar un compilador separado no es "la única" manera de incrustar realmente C o C++ ". – andref

1

Existe el intérprete ch pero no lo he usado. En general, para las aplicaciones de tipo scripting se usa un lenguaje con scripts más natural.

1

Genial. Parece que LLVM es lo que buscaba. Muchas gracias por sus comentarios. No estoy principalmente después de C++ como lenguaje de scripting. Me di cuenta de que Python se usa como un motor de script incrustado. Mi razón principal es doble:

  1. deshacerse fuera Make, CMake y el infierno que es Autoconf y reemplazarlo con algo como Scons que se une al e interactúa con todas las fases de la compilación
  2. gancho en la compilación proceso después de analizar y generar código automáticamente. Código meta relacionado específicamente. En mi caso, he podido implementar casi todas las funciones de Java en C++ excepto una: Reflection.

Por qué imponer a su código una carga no compartida como RTTI que a menudo es inadecuada. En cambio, uno podría generar selectivamente funciones adicionales. Pero el desarrollador debería elegir cuándo y cómo usar este código adicional.

+0

Oh, queridos dioses. Estás luchando contra C++. Ahora me siento mal por mi respuesta: me va a traer ríos de mal karma. – andref

+0

Jeje, no te preocupes por tu karma. Es más al revés. – 640KB

Cuestiones relacionadas