SQLite y googletest vienen con una versión de un solo archivo, muy fácil de usar, que hace que usarlo en otros proyectos sea muy sencillo, ya que solo necesita agregar un único archivo fuente. Ambos usan herramientas caseras para crear el archivo fuente combinado, así que me pregunto si hay una herramienta más genérica para esto. Debería llevar una lista de archivos de cabecera/implementación y escupir un encabezado/fuente combinado, y arreglar los includes locales. Estoy bien si no maneja inclusiones/inclusiones con diferentes #defines
antes de ellas como Boost.Tuple/MPL las usa. Una biblioteca objetivo típica sería algo así como ICU.¿Herramienta para crear una amalgama/combinar todos los archivos fuente de una biblioteca en uno para C/C++?
Respuesta
Si sus inclusiones están definidas correctamente (es decir, hay protecciones en todos los archivos de encabezado, y cada unidad de encabezado/código contiene todo lo que necesita), puede hacerlo "a medias". Ubique el encabezado del sistema incluye y coméntelos, luego cree un encabezado que simplemente incluya todo en cualquier orden aleatorio y preprocesé el encabezado (en gcc que sería gcc -E
) y luego opere de manera similar con las unidades de código.
Este enfoque manual puede ser engorroso, pero si solo tiene que hacerlo una vez, todo estará bien. Por otra parte, incluso si fusionar los archivos de cabecera puede tener sentido, prefiero no hacerlo. En realidad, dejaría los archivos por separado, y si siente que necesita simplificar el acceso a él, proporcione encabezados de agrupación que solo incluyan los demás. Este es el enfoque que toman algunas bibliotecas de impulso, donde puede incluir los detalles de lo que desea o un solo encabezado que incluye todo lo demás. El código se puede compilar/vincular en una lib estática y se puede usar como si fuera un elemento único.
Esto podría ser algo interesante en la UCI, que tiene, en algunos casos, incompatibilidades define/incluye y mezclas de C y C++ y una cantidad de archivos generados. ¿Tal vez nos dejen saber cómo va?
(divulgación: desarrollador UCI)
probar esto https://github.com/vinniefalco/Amalgamate/ puede ser que puede ayudar ...
- 1. Visual Studio: ¿Imprimir todos los archivos fuente en una solución?
- 2. Herramienta o biblioteca para comparar archivos xml
- 3. Herramienta para crear la jerarquía de llamadas de la biblioteca
- 4. Herramienta/truco para reemplazar pestañas en todos los archivos de una solución completa de VS
- 5. ¿Herramienta para crear contenedores .NET para una DLL COM?
- 6. ¿Por qué algunos proyectos eligen la extensión para los archivos fuente .cc en C++?
- 7. Makefile para una biblioteca
- 8. biblioteca C++ para crear archivos tar
- 9. Cómo crear una biblioteca estática para iOS sin hacer que todos los símbolos sean públicos
- 10. ¿Hay una biblioteca Java para analizar los archivos PO gettext?
- 11. ¿Cómo necesitaría una contraseña para todos los archivos, excepto uno que use .htaccess?
- 12. Cómo crear una función recursiva para copiar todos los archivos y carpetas
- 13. ¿Una herramienta para decirle qué archivos fuente se necesitan en un proyecto de C++?
- 14. ¿Obtiene todos los archivos de VSS para una fecha determinada?
- 15. BASH copia todos los archivos excepto uno
- 16. Proporcione una referencia/guía para crear una aplicación web para administrar todos los dispositivos/dispositivos informáticos
- 17. Imprimir todos los caracteres de una fuente en MS Word
- 18. ¿Cómo puedo crear una Regex alfanumérica para todos los idiomas?
- 19. Buscar todos los archivos en una carpeta
- 20. Crear una biblioteca estática para iPhone
- 21. una impresora bonita "para gobernarlos a todos"
- 22. Vim: crear marcas en todos los archivos?
- 23. Crear contratos de código para una biblioteca heredada
- 24. ¿Cómo se especifican los atributos de fuente para todos los elementos en una página web html?
- 25. elegir una herramienta para crear/mantener eclipse personalizado distrib
- 26. ¿Hay una biblioteca de JavaScript para crear gráficos?
- 27. Crear un contenedor para una biblioteca C en Python
- 28. Mejor herramienta para crear MSI
- 29. fuente de todos los archivos en un directorio de .bash_profile
- 30. Python: ¿Cómo ejecutar unittest.main() para todos los archivos fuente en un subdirectorio?
¿Qué sistema operativo? –
Windows o Linux, preferiblemente ambos. Estoy bien, sin embargo, si la herramienta se ejecuta solo en uno de ellos. – Anteru