Estoy usando CMake para generar mis proyectos IDE / makefiles, pero todavía necesito llamar "scripts" personalizados para manipular mis archivos compilados o incluso generar código.
En proyectos anteriores, he estado usando Python y estaba bien, pero ahora estoy teniendo serios problemas para administrar muchas dependencias en dos proyectos muy grandes en los que estoy trabajando, así que quiero minimizar las dependencias en todas partes.
Alguien me sugirió usar C ++ para escribir mis scripts de compilación en lugar de agregar una dependencia de lenguaje solo para eso. Los proyectos ya usan C ++, por lo que hay varias ventajas que puedo ver:
- para construir todo el proyecto, solo sería necesario un compilador de C ++ y CMake, nada más (todas las demás dependencias son C o C ++);
- La seguridad de tipo C ++ (cuando se usa C ++ moderno) hace que todo sea más fácil de "corregir";
- también es el idioma que mejor conozco, así que estoy más cómodo incluso si puedo escribir un buen código de Python;
- ganancia potencial en la velocidad de ejecución (pero no creo que sea realmente perceptible);
Sin embargo, creo que puede haber algunos inconvenientes y no estoy seguro del impacto real, ya que aún no lo intenté:
- podría ser más largo para escribir el código (dicho esto no estoy seguro porque soy lo suficientemente eficiente en C ++ para escribir algo que funcione rápidamente, así que tal vez para este sistema no sería tan largo escribir) (el tiempo de compilación no debería ' t sea un problema para este caso);
- Debo suponer que todos los archivos de texto que leeré como entrada están en UTF-8, no estoy seguro de que se pueda verificar fácilmente en tiempo de ejecución en C ++ y el lenguaje no lo comprobará por usted;
- las bibliotecas en C ++ son más difíciles de administrar que en los lenguajes de secuencias de comandos;
Me falta experiencia y visión de futuro, así que tal vez me faltan ventajas e inconvenientes. Entonces la pregunta es: ¿tiene sentido usar C ++ para esto? ¿Tiene experiencias para informar y ve ventajas y desventajas que podrían ser importantes?
fuente
Respuestas:
Solo usa Python.
Me desarrollo en C ++ y hago mis scripts de compilación en Python, y me resultaría doloroso hacer scripts de compilación en C ++:
En cuanto a las ventajas que enumera para C ++:
fuente
Creo que esta es una pregunta específica del caso. Yo diría que no hay una respuesta correcta si tiene sentido o no usar C ++ para crear scripts, la única forma de resolverlo es probarlo en la práctica.
Personalmente, vería Python superior a C ++ debido a una mejor expresividad del lenguaje y herramientas de biblioteca estándar más fáciles (opinión personal, por supuesto) para administrar la tarea de manipular archivos binarios y generar código. Por supuesto, las bibliotecas sofisticadas desarrolladas para la tarea podrían estar disponibles, pero si no, entonces yo personalmente apostaría definitivamente a que Python sea la respuesta "más a menudo correcta", en general.
fuente
No escriba guiones usted mismo, está duplicando esfuerzos y reinventando ruedas.
Use algo como SCONS o incluso Maven 3 que tiene soporte para sistemas de compilación C ++ .
Un buen sistema de compilación, independientemente del lenguaje, no debería requerir una lógica personalizada en forma de scripts para construir un artefacto ejecutable que funcione.
Si tiene que escribir scripts para un sistema de compilación para personalizarlo, no es un buen sistema de compilación. Escribir un complemento para un sistema de compilación es una historia diferente, pero aún así debería ser muy particular para un entorno / hardware en su mayoría, y debería ser algo a lo que rara vez se recurre.
fuente
Para centrarse en la pregunta:
La respuesta es un simple no .
La respuesta actualmente aceptada se amplía a Python y enumera un montón de preocupaciones válidas, pero me gustaría agregar una razón independiente del idioma:
Realmente no desea escribir nada en ningún lenguaje compilado si puede ayudarlo:
Además, yendo con la otra respuesta:
Probablemente tampoco desee utilizar un lenguaje de script "en bruto" para crear sus scripts de compilación (entiendo que CMake manejaría las complejidades de C ++).
Lo que probablemente debería hacer es elegir uno de los Build . Los sistemas . a cabo . allí . y ver si uno se ajusta a su factura wrt. scriptability / extensibilidad / play-nice-with-CMake / crossplatformness.
fuente