Sto usando CMake per generare i miei progetti IDE / makefile, ma devo ancora chiamare "script" personalizzati per manipolare i miei file compilati o persino generare codice.
In progetti precedenti ho usato Python ed era OK, ma ora ho seri problemi a gestire molte dipendenze in due progetti molto grandi su cui sto lavorando, quindi voglio minimizzare le dipendenze ovunque.
Qualcuno mi ha suggerito di usare C ++ per scrivere i miei script di build invece di aggiungere una dipendenza dal linguaggio solo per quello. I temi stessi del progetto usano già C ++, quindi ci sono molti vantaggi che posso vedere:
- per costruire l'intero progetto, sarebbero necessari solo un compilatore C ++ e CMake, nient'altro (tutte le altre dipendenze sono C o C ++);
- La sicurezza di tipo C ++ (quando si utilizza il C ++ moderno) rende tutto più facile da ottenere "corretto";
- è anche la lingua che conosco meglio, quindi mi sento più a mio agio anche se sono in grado di scrivere del buon codice Python;
- potenziale guadagno nella velocità di esecuzione (ma non credo che sarà realmente percepibile);
Tuttavia, penso che potrebbero esserci alcuni inconvenienti e non sono sicuro del reale impatto in quanto non ho ancora provato:
- potrebbe essere più lungo scrivere il codice (detto che non sono sicuro perché sono abbastanza efficiente in C ++ per scrivere qualcosa che funzioni rapidamente, quindi forse per questo sistema non sarebbe così lungo scrivere) (il tempo di compilazione non dovrebbe ' essere un problema per questo caso);
- Devo presumere che tutti i file di testo che leggerò come input sono in UTF-8, non sono sicuro che possano essere facilmente controllati in fase di esecuzione in C ++ e il linguaggio non lo controllerà per te;
- le librerie in C ++ sono più difficili da gestire rispetto ai linguaggi di scripting;
Mi manca esperienza e lungimiranza, quindi forse mi mancano vantaggi e svantaggi. Quindi la domanda è: ha senso usare C ++ per questo? hai esperienze da segnalare e vedi vantaggi e svantaggi che potrebbero essere importanti?