Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 2340|Resposta: 1

Introdução ao GCC, CMake, CMakelist, Make, Makefile e Ninja

[Copiar link]
Publicado em 09/07/2024 20:44:28 | | |
1. O nascimento do GCC!

Em 1985, numa noite escura, quando seus dedos estavam fora de vista, um homem estranho, com barba, corpo baixo e cabelo bagunçado começou a escrever um conjunto de compiladores em linguagem C. Essa ecófonia, mais tarde conhecida como o "maior programador" e "pai do software livre", foi Richard Stallman. Após dois anos de trabalho árduo, Richard Stallman, que tem uma barba mais longa e cabelos mais bagunçados, concluiu a primeira versão do compilador C, que ele chama de GNU C Complier, que agora é a fonte do famoso GCC. Mais tarde, o GCC se desenvolveu rapidamente, e agora o GCC pode compilar não apenas a linguagem C, mas também C++, Fortran, Pascal, Objective-C, Java, Ada e outras linguagens. Nos anos 80 e 90 do século passado, a frequência da CPU, o tamanho do disco rígido e o tamanho da memória dos computadores pessoais eram todos medidos em MB ou até KB, e o número de arquivos de programa que precisavam ser compilados era pequeno, e comandos GCC eram suficientes para lidar com isso.

Segundo, novos problemas surgiram! (fazer & fazer arquivo)

Com a melhoria e popularização do desempenho dos computadores, um projeto de software contém cada vez mais arquivos-fonte, como o Linux, que é facilmente confuso e carregado de trabalho, fácil de confundir e carregado de trabalho, o que deixa as pessoas loucas.

Richard Stallman e Roland McGrath co-desenvolveram o make e o makefile para resolver esse problema. A ferramenta make pode ser vista como uma ferramenta inteligente de processamento em lote, que não tem a função de compilar e vincular, mas usa um método semelhante ao processamento em lote – chamando os comandos especificados pelo usuário no arquivo makefile. O que é um makefile? O makefile é um arquivo script, assim como a partitura de uma música, a ferramenta make é como um maestro, o maestro direciona toda a orquestra a tocar de acordo com a partitura, e a ferramenta make é compilada e vinculada de acordo com os comandos no makefile. O comando makefile contém comandos para chamar gcc (ou outro compilador) para compilar um arquivo fonte.

3. Novos problemas surgiram novamente! (Cmake & CMakelist)

O makefile pode ser escrito manualmente em alguns projetos simples, mas quando o projeto é muito grande, também é muito difícil escrever o makefile manualmente. E makefiles para diferentes plataformas surgiram um após o outro, incluindo GNU make, qmake do QT, MSnmake da Microsoft, BSD Make (pmake), Makepp, etc. Essas ferramentas Make seguem especificações e padrões diferentes, e o formato Makefile que apresentam varia bastante. Isso representa um problema sério: se o software quiser ser multiplataforma, deve ser capaz de compilar em diferentes plataformas. Se você usar a ferramenta Make acima, terá que escrever um makefile para cada padrão, o que será um trabalho complicado, e se você mudar o makefile da plataforma, terá que remodificá-lo.

Então, nesse momento, a ferramenta Cmake apareceu, e o Cmake pode gerar um arquivo makefile para o make acima com mais facilidade. Claro, o cmake também tem outras funções, ou seja, pode gerar makefiles que podem ser usados na plataforma correspondente entre plataformas, e você não precisa modificar por conta própria. cmake é a camada superior do Makefile, e seu propósito é produzir makefiles portáteis e simplificar a enorme carga de trabalho de escrever makefiles sozinho. Mas o que o cmake usa para gerar um makefile? Também precisa gerar um makefile baseado em um arquivo chamado arquivo CMakeLists.txt (nome científico: arquivo de configuração). No fim das contas, CMakeLists.txt quem escreve o documento? Claro, você mesma escreveu.

Quarto, novos problemas surgiram novamente! (Ninja)

À medida que a engenharia de software se torna maior e mais complexa, o problema da lenta execução da produção se torna cada vez mais sério.

Como resultado, um programador do Google lançou o Ninja, uma ferramenta de construção focada em velocidade. Ninja não tem todos os tipos de recursos avançados, a sintaxe e o uso são muito simples, e especifica o que fazer em detalhes, então começa a compilar muito rápido. De acordo com testes do mundo real: com mais de 30.000 arquivos-fonte, também é possível iniciar uma build real em 1 segundo. Em contraste, Makefiles escritos por engenheiros seniores também levam de 10 a 20 segundos para começar a ser construídos.

5. O final perfeito até agora!

O Cmake pode gerar ferramentas .ninja e .makefile. Como muitas pessoas não estão familiarizadas com como escrever arquivos makefile e arquivos ninja, o cmake só precisa de uma descrição simples do arquivo de código-fonte (ou seja, CMakeLists.txt arquivo) para gerar automaticamente um arquivo makefile do projeto ou arquivo ninja, e então começar a compilar através de ninja ou make.


5 minutos para entender make/makefile/cmake/nmake

Recentemente, você foi feito por make, cmake, makefile... ... Essas coisas são tontas, veja o artigo a seguir, talvez você consiga entender claramente.

1. GCC
É a GNU Compiler Collection, ou simplesmente um compilador, que pode compilar muitas linguagens de programação (incluindo C, C++, Objective-C, Fortran, Java, etc.).

Quando nosso programa tem apenas um arquivo fonte, podemos compilá-lo diretamente com o comando gcc.

Mas e se nosso programa contiver muitos arquivos fonte? Ao compilar comandos gcc um por um, é fácil se confundir e exigir muito trabalho, então a seguinte ferramenta de criação aparece.

2. Faça
A ferramenta make pode ser vista como uma ferramenta inteligente de processamento em lote, que não tem a função de compilar e vincular, mas usa um método semelhante ao processamento em lote – chamando os comandos especificados pelo usuário no arquivo makefile.

3. makefile
O que é isto?

Simplificando, assim como a partitura de uma música, a ferramenta make é como um maestro, o maestro direciona toda a orquestra a tocar conforme a partitura, e a ferramenta make compila e vincula conforme os comandos no makefile. O comando makefile contém comandos para chamar gcc (ou outro compilador) para compilar um arquivo fonte.

O makefile pode ser pego manualmente em alguns projetos simples, mas quando o projeto é muito grande, o makefile manuscrito também é muito problemático.

4. cmake
O cmake pode facilmente gerar um arquivo makefile para o make acima. Claro, o cmake tem outras funções melhores, ou seja, pode gerar makefiles que podem ser usados na plataforma correspondente entre plataformas, então não precisamos modificar nós mesmos.

Mas o que o cmake usa para gerar um makefile? Também precisa gerar um makefile baseado em um arquivo chamado arquivo CMakeLists.txt (nome científico: arquivo de configuração).

5. CMakeList.txt
No fim das contas, CMakeLists.txt quem escreve o documento? Querida, está escrito pela sua própria autoria.

6. Nmake
O que é nmake?

nmake é um comando paralelo no Microsoft Visual Studio, que precisa instalar o VS, que na verdade pode ser considerado equivalente ao modelo do Linux, entendeu?

Transferido de:

O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.





Anterior:ERP Kingdee Cloud Starry Sky (1) Compreensão simples
Próximo:Pacote Rocky Linux 9 não encontrado: Sem correspondência para argumento: xxx
 Senhorio| Publicado em 08/12/2024 08:57:06 |
O MinGW oferece um ambiente simples e conveniente de desenvolvimento de programas baseado em GCC para Windows. O MinGW coleta uma coleção de arquivos gratuitos de cabeçalhos e bibliotecas para uso do Windows; Também integra GNU (http://www.gnu.org/), especialmente ferramentas de desenvolvimento GNU como classic gcc, g++, make, etc. MinGW é um software completamente livre, que simula o ambiente de desenvolvimento GCC sob Linux na plataforma Windows, oferecendo bom suporte básico para o desenvolvimento multiplataforma de C++ e proporcionando condições para que programadores que trabalham sob Windows se familiarizem com a organização de engenharia C++ sob Linux.
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com