quando usar CMake clean/configure? edit
CMake caches várias informações no arquivo CMakeCache.txt
. Trata-se, por exemplo, de listas em que foram encontrados pacotes específicos e em que foram aprovadas definições com -D
.
alguns exemplos quando pretende utilizar --cmake-clean-cache
:
- anteriormente encontrado pacote deve ser procurado novamente, pois você deseja que ele seja encontrado/usado, a partir de uma localização diferente
- você ter passado uma definição antes de que você não deseja ser definido avançando
CMake é executado automaticamente a configurar a etapa, quando qualquer incluído o CMake ficheiro foi alterado. Mas às vezes a sua lógica depende do estado/arquivos adicionais/externos e você precisa do CMake para executar o passo de configuração novamente. (Existem formas de dizer ao CMake que a alteração de um ficheiro não-CMake específico deverá desencadear uma reconfiguração.) Por isso, se você precisar do passo Configurar para correr de novo, mas o CMake não o faz automaticamente, você pode tocar e incluir o ficheiro CMake ou simplesmente passar --cmake-force-configure
.
um caso onde você pode querer invocar make clean
é verificar novamente se o seu código tem quaisquer avisos de compilador. Uma vez que um arquivo de código tenha sido compilado, ele geralmente não está sendo recompilado até que ele (ou quaisquer cabeçalhos incluídos) mudou. Nessa primeira compilação você pode ver um aviso de compilador, mas em compilações consecutivas (assumindo que os arquivos não mudaram) você não iria ver o aviso de compilador novamente. Passar --cmake-clean-first
é uma boa maneira de garantir que todos os arquivos estão sendo recompilados.
às vezes o diretório de compilação contém estado adicional de compilações anteriores que podem afetar as compilações seguintes (por exemplo, uma versão anterior do pacote criou alguns arquivos no diretório de compilação). Esses não seriam limpos e poderiam afetar a continuação de compilações, mesmo depois que a lógica que os criou foi removida. Então este seria um caso em que apagar todo o diretório build
ajudaria.
outro caso que eu recomendaria excluir o diretório build
é quando você se depara com um problema que você não entende. É também para reproduzir um problema usando uma nova construção antes de reportá-lo em um bilhete. Começando com uma nova construção pode resolver qualquer estado estranho que tenha construído ao longo do tempo / com base no que foi feito no passado.
se você tem ccache
configurar uma reconstrução completa não é tão caro, uma vez que muitos dos artefatos de construção foram cache antes, então geralmente não vai levar a quantidade total de tempo para uma nova construção.