Estou usando o CMake para gerar meus projetos IDE / makefiles, mas ainda preciso chamar "scripts" personalizados para manipular meus arquivos compilados ou até mesmo gerar código.
Em projetos anteriores, eu estava usando Python e estava tudo bem, mas agora estou tendo sérios problemas para gerenciar muitas dependências em dois projetos muito grandes em que estou trabalhando, por isso quero minimizar as dependências em todos os lugares.
Alguém me sugeriu usar C ++ para escrever meus scripts de compilação, em vez de adicionar uma dependência de linguagem apenas para isso. Os próprios temas do projeto já usam C ++, então há várias vantagens que posso ver:
- para construir o projeto inteiro, apenas um compilador C ++ e o CMake seriam necessários, nada mais (todas as outras dependências são C ou C ++);
- A segurança do tipo C ++ (ao usar o C ++ moderno) torna tudo mais fácil de ser "correto";
- é também a linguagem que conheço melhor, por isso estou mais à vontade com ela, mesmo que seja capaz de escrever um bom código Python;
- ganho potencial na velocidade de execução (mas não acho que seja realmente perceptível);
No entanto, acho que pode haver algumas desvantagens e não tenho certeza do impacto real, pois ainda não tentei:
- pode levar mais tempo para escrever o código (que disse que não tenho certeza porque sou eficiente o suficiente em C ++ para escrever algo que funcione rapidamente, então talvez para este sistema não demore muito para escrever) (o tempo de compilação não deve ser ' ser um problema para este caso);
- Devo assumir que todos os arquivos de texto que vou ler como entrada estão em UTF-8, não tenho certeza de que possam ser facilmente verificados em tempo de execução em C ++ e o idioma não o verificará;
- as bibliotecas em C ++ são mais difíceis de gerenciar do que nas linguagens de script;
Eu não tenho experiência e previsão, então talvez eu esteja perdendo vantagens e desvantagens. Portanto, a pergunta é: faz sentido usar C ++ para isso? você tem experiências a relatar e vê vantagens e desvantagens que podem ser importantes?
fonte
Respostas:
Basta usar o Python.
Desenvolvo em C ++ e faço meus scripts de construção em Python, e acho difícil criar scripts em C ++:
Em relação às vantagens listadas para C ++:
fonte
Eu acredito que essa seja uma pergunta específica de caso. Eu diria que não há resposta correta, se faz sentido ou não usar C ++ para criar scripts, a única maneira de descobrir isso é experimentá-lo na prática.
Pessoalmente, eu considerava o Python superior ao C ++ devido à melhor expressividade da linguagem e às ferramentas de biblioteca padrão mais fáceis (opinião pessoal, é claro) para gerenciar a tarefa de manipular arquivos binários e gerar código. É claro que bibliotecas sofisticadas desenvolvidas para a tarefa podem estar disponíveis, mas, se não, então eu pessoalmente apostaria que o Python seria a resposta "mais frequentemente correta" - em geral.
fonte
Não escreva scripts, você está duplicando o esforço e reinventando as rodas.
Use algo como SCONS ou mesmo o Maven 3, que tenha suporte para sistemas de compilação C ++ .
Um bom sistema de construção, independentemente da linguagem, não deve exigir lógica customizada na forma de scripts para construir um artefato executável em funcionamento.
Se você precisar escrever scripts para um sistema de construção para personalizá-lo, não será um bom sistema de construção. Escrever um plug-in para um sistema de compilação é uma história diferente, mas ainda assim deve ser muito particular para um ambiente / hardware e deve ser algo que raramente é utilizado.
fonte
Para se concentrar na pergunta:
A resposta é um simples não .
A resposta atualmente aceita amplia o python e lista um monte de preocupações válidas, mas eu gostaria de adicionar um motivo independente da linguagem:
Você realmente não deseja escrever nada em nenhum idioma compilado, se puder ajudá-lo:
Além disso, acompanhando a outra resposta:
Provavelmente você também não deseja usar uma linguagem de script "bruta" para criar seus scripts de construção (entendo que os meandros do C ++ seriam tratados pelo CMake).
O que você provavelmente deve fazer é escolher um dos Build . Sistemas . fora . lá . e veja se alguém se encaixa na sua conta. scriptability / extensibilidade / play-nice-with-CMake / crossplatformness.
fonte