No meu desenvolvimento (principalmente em C ++), adotei há muito tempo o uso de compilações fora da fonte. Ou seja, a minha fonte geralmente se senta em um /project/src
diretório e as compilações ao vivo em um /project/build/bin/release
, /project/build/bin/debug
diretórios. Fiz isso porque mantém meus diretórios de origem limpos de arquivos intermediários, tenho um local para todos os meus binários, empacotamento é mais fácil, limpeza é mais fácil e controle de versão é mais fácil. (Eu perdi alguma coisa?)
Agora estou herdando um projeto (grande) que usa compilações na fonte. Qual é a motivação para esse tipo de estrutura e quais são suas vantagens? (Estou mais preocupado com razões no nível de engenharia vs. tipos de razões de preferência pessoal.)
Eu esperava que o "Design de software C ++ em larga escala" da Lakos tivesse peso, mas eu perdi se isso acontecesse.
/project/src/bin/release
, ou realmente todos os arquivos intermediários e de saída /project/src
? O último pode ser realmente uma bagunça, se houver mais de uma dúzia de arquivos de origem, o primeiro está ok.
main.cpp
estando inicialmente no nível superior do seu projeto, ele ainda cria um diretório cmake build separado da sua origem nesse nível superior. Acredito que o MSVS também seja semelhante ao Clion nesse sentido.