Qual é a diferença entre CMake e Make?
Por que precisamos do Make?
Em um projeto, às vezes o número de arquivos de código fonte pode ir acima de 1000. Nesses casos, é um trabalho muito desafiador manter um registro de todas as dependências. Além disso, o processo de compilação em tais casos leva muito tempo, às vezes mais de uma hora. Porque, cada vez que modificamos mesmo um único arquivo, precisamos compilar e ligar todos os arquivos desde o início, o que é um processo muito demorado.
Nesses casos, se tivermos acesso a uma representação em árvore de todas as dependências, e a uma lista de arquivos que nós'alteramos desde a última compilação bem sucedida, então, podemos escolher apenas compilar os arquivos que nós'alteramos e depois ligar todos aqueles juntos.
Isso nos pouparia um tempo significativo, pois, muito poucos arquivos são normalmente alterados em 1 go.
Como podemos resolver esse problema?
Make, Ninja, Ant, Gradle, MSVC são alguns dos sistemas de compilação. Para construir um projeto, o desenvolvedor escreve um código especial em 'build file', que é diferente do código fonte do projeto's. Este arquivo de build contém as informações da árvore de dependência; e o sistema de build usa esse arquivo de build para compilar e ligar os códigos-fonte. No caso de 'Make' sistema de compilação, o desenvolvedor escreve um 'makefile' para construir o projeto.
O que é CMake?
CMake é um sistema de meta-construção ou gerador de sistema de compilação. A ferramenta CMake é capaz de escrever o makefile para nós.
Por que precisamos aprender esta nova ferramenta 'CMake' para esta simples aplicação?
A construção de projetos C++ não é padrão em todas as plataformas. Isto significa que, mesmo que você tenha o código fonte e o makefile de um projeto C++ de sua máquina Linux, você não pode construir diretamente esse código dentro do sistema operacional Windows. Da mesma forma, se você tem uma solução Visual Studio a partir da máquina Windows, você não pode compilá-la diretamente no ambiente Linux. CMake é capaz de resolver este problema criando os arquivos do sistema de compilação baseado em plataforma definindo algumas flags.
Isso significa que, uma vez que você tenha compartilhado seus códigos de projeto para qualquer um que possa ser compilado usando CMake, você não precisa se preocupar com seu ambiente de desenvolvimento. CMake cuidará disso.
Caso você queira aprender a ferramenta CMake, eu tenho uma série de palestras feitas chamada 'Master CMake for Cross-Platform C++ Project Building[1]' para iniciantes absolutos.
Você também pode visitar este vídeo do YouTube para visualização.
Notas de rodapé
[1] Tutoriais do CMake para iniciantesArtigos semelhantes
- How to make the background image of a button disappear when we click it, and make it appear on another button when we click it in Visual Studio
- How to make a to-do-list using PHP and connecting it using MySQL
- How to make a hyperlink to link with a div
- How to make a GIF from a series of iPhone burst photos