Sto usando CMake per generare i miei progetti IDE / makefile, ma ho ancora bisogno di chiamare "script" personalizzati per manipolare i miei file compilati o anche generare codice.
Nei progetti precedenti ho usato Python ed era OK, ma ora sto avendo grossi 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 compilazione invece di aggiungere una dipendenza dalla lingua solo per quello. I progetti utilizzano già C ++, quindi ci sono diversi vantaggi che posso vedere:
- per costruire l'intero progetto, solo un compilatore C ++ e CMake sarebbero necessari, nient'altro (tutte le altre dipendenze sono C o C ++);
- La sicurezza del tipo C ++ (quando si utilizza il C ++ moderno) rende tutto più semplice da ottenere "corretto";
- è anche la lingua che conosco e meglio mi sento più a mio agio anche se sono in grado di scrivere un buon codice Python;
- potenziale guadagno in termini di velocità di esecuzione (ma non credo che sarà davvero 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 per scrivere il codice (che dice che non sono sicuro perché sono abbastanza efficiente in C ++ per scrivere qualcosa che funzioni velocemente, quindi forse per questo sistema non sarebbe così lungo scrivere) (compilazione il tempo non dovrebbe essere un problema per questo caso);
- Devo supporre che tutti i file di testo che leggerò come input siano in UTF-8, non sono sicuro che possa essere facilmente controllato in runtime in C ++ e la lingua non lo controllerà per te;
- le librerie in C ++ sono più difficili da gestire rispetto ai linguaggi di scripting;
Mi manca esperienza e forsight 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?