Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 2340|Risposta: 1

Introduzione a GCC, CMake, CMakelist, Make, Makefile e Ninja

[Copiato link]
Pubblicato su 09/07/2024 20:44:28 | | |
1. La nascita del GCC!

Nel 1985, in una notte buia in cui le dita erano fuori dalla vista, un uomo strano con barba, figura bassa e capelli arruffati iniziò a scrivere una serie di compilatori in linguaggio C. Questa ecfonia, poi conosciuta come il "più grande programmatore" e "padre del software libero", fu Richard Stallman. Dopo due anni di duro lavoro, Richard Stallman, che ha una barba più lunga e capelli più disordinati, ha completato la prima versione del compilatore C, che chiama GNU C Complier, che ora è la fonte del famoso GCC. Successivamente, GCC si sviluppò rapidamente e ora GCC può compilare non solo il linguaggio C, ma anche C++, Fortran, Pascal, Objective-C, Java, Ada e altri linguaggi. Negli anni '80 e '90 del secolo scorso, la frequenza della CPU, la dimensione del disco rigido e la dimensione della memoria dei personal computer venivano tutte misurate in MB o addirittura KB, e il numero di file di programma da compilare era basso, e i comandi GCC erano sufficienti per gestirlo.

In secondo luogo, sono comparsi nuovi problemi! (make & makefile)

Con il miglioramento e la diffusione delle prestazioni dei computer, un progetto software contiene sempre più file sorgente, come Linux, che può facilmente confondere e sovraccaricare il lavoro, facilmente confondibile e carico di lavoro, il che farà impazzire le persone.

Richard Stallman e Roland McGrath hanno co-sviluppato make e makefile per risolvere questo problema. Lo strumento make può essere visto come uno strumento intelligente per l'elaborazione batch, che non ha la funzione di compilare e collegare, ma utilizza un metodo simile all'elaborazione batch - chiamando i comandi specificati dall'utente nel file makefile. Cos'è un makefile? Il makefile è un file script, proprio come la partitura di una canzone, lo strumento make è come un direttore d'orchestra, il direttore dirige l'intera orchestra a suonare secondo la partitura, e lo strumento make viene compilato e collegato secondo i comandi presenti nel makefile. Il comando makefile contiene comandi per chiamare gcc (o un altro compilatore) per compilare un file sorgente.

3. Sono sorti nuovi problemi! (Cmake & CMakelist)

Il makefile può essere scritto a mano in alcuni progetti semplici, ma quando il progetto è molto grande, è anche molto complicato scrivere il makefile a mano. E makefile per diverse piattaforme sono apparsi uno dopo l'altro, tra cui GNU make, qmake di QT, MSnmake di Microsoft, BSD Make (pmake), Makepp, ecc. Questi strumenti Make seguono specifiche e standard diversi, e il formato Makefile che utilizzano varia notevolmente. Questo pone un problema serio: se il software vuole essere multipiattaforma, deve essere in grado di compilare su piattaforme diverse. Se usi lo strumento Make sopra, devi scrivere un makefile per ogni standard, il che sarà un lavoro folle, e se cambi il makefile della piattaforma, dovrai rimodificarlo.

Quindi, in quel momento, è apparso lo strumento Cmake, e Cmake può generare più facilmente un file makefile per il make sopra. Ovviamente, cmake ha anche altre funzioni, cioè può generare makefile che possono essere usati sulla piattaforma corrispondente tra piattaforme, senza doverli modificare da solo. cmake è il livello superiore di Makefile, e il loro scopo è produrre makefile portatili e semplificare l'enorme carico di lavoro di scrivere makefile da soli. Ma cosa serve cmake per generare un makefile? Deve anche generare un makefile basato su un file chiamato CMakeLists.txt file (nome scientifico: file di configurazione). Alla fine, CMakeLists.txt chi scrive il documento? Certo, l'hai scritto tu.

Quarto, sono ricomparsi nuovi problemi! (Ninja)

Man mano che l'ingegneria del software diventa più grande e complessa, il problema della lentezza della velocità di esecuzione del make diventa sempre più serio.

Di conseguenza, un programmatore di Google lanciò Ninja, uno strumento di build focalizzato sulla velocità. Ninja non ha tutte le funzionalità avanzate, la sintassi e l'uso sono molto semplici, e specifica in dettaglio cosa fare, quindi inizia a compilare molto rapidamente. Secondo test reali: con più di 30.000 file sorgente, è anche possibile avviare una build reale in 1 secondo. Al contrario, anche i Makefile scritti da ingegneri senior impiegano 10-20 secondi per essere costruiti.

5. Il finale perfetto finora!

Cmake può generare strumenti .ninja e .makefile. Poiché molte persone non sono familiari con la scrittura di file makefile e file ninja, cmake ha bisogno solo di una semplice descrizione del file di codice sorgente (cioè, CMakeLists.txt file) per generare automaticamente un file makefile o file ninja del progetto, e poi iniziare a compilare tramite ninja o make.


5 minuti per capire make/makefile/cmake/nmake

Recentemente, sei stato fatto da make, cmake, makefile... ... Queste cose sono stordite, guarda l'articolo che segue, magari puoi capire chiaramente.

1. GCC
Si tratta della GNU Compiler Collection, o semplicemente un compilatore, che può compilare molti linguaggi di programmazione (inclusi C, C++, Objective-C, Fortran, Java, ecc.).

Quando il nostro programma ha un solo file sorgente, possiamo compilarlo direttamente con il comando gcc.

Ma cosa succede se il nostro programma contiene molti file sorgente? Quando si compilano con i comandi gcc uno per uno, è facile confondersi e richiedere molto lavoro, quindi compare il seguente strumento di creazione.

2. Fare
Lo strumento make può essere visto come uno strumento intelligente per l'elaborazione batch, che non ha la funzione di compilare e collegare, ma utilizza un metodo simile all'elaborazione batch - chiamando i comandi specificati dall'utente nel file makefile.

3. makefile
Cosa e' questo?

In parole semplici, proprio come la partitura di una canzone, lo strumento make è come quello di un direttore d'orchestra: il direttore dirige l'intera orchestra a suonare secondo lo spartito, e lo strumento make compila e collega secondo i comandi presenti nel makefile. Il comando makefile contiene comandi per chiamare gcc (o un altro compilatore) per compilare un file sorgente.

Il makefile può essere preso manualmente in alcuni progetti semplici, ma quando il progetto è molto grande, anche il makefile scritto a mano è molto problematico.

4. cmake
Cmake può facilmente generare un file makefile per il make sopra. Ovviamente, cmake ha altre funzioni migliori, cioè può generare makefile che possono essere usati sulla piattaforma corrispondente tra piattaforme, così non dobbiamo modificarli noi stessi.

Ma cosa serve cmake per generare un makefile? Deve anche generare un makefile basato su un file chiamato CMakeLists.txt file (nome scientifico: file di configurazione).

5. CMakeList.txt
Alla fine, CMakeLists.txt chi scrive il documento? Cara, è scritto di tua mano.

6. nmake
Cos'è nmake?

nmake è un comando secondario in Microsoft Visual Studio, che deve installare VS, che in realtà può essere considerato equivalente a quello di Linux, capito?

Trasferito da:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.





Precedente:ERP Kingdee Cloud Starry Sky (1) Comprensione semplice
Prossimo:Pacchetto Rocky Linux 9 non trovato: Nessuna corrispondenza per l'argomento: xxx
 Padrone di casa| Pubblicato su 08/12/2024 08:57:06 |
MinGW offre un ambiente di sviluppo di programmi basato su GCC semplice e comodo per Windows. MinGW raccoglie una raccolta di file gratuiti di header e librerie per Windows use; Integra anche GNU (http://www.gnu.org/), in particolare strumenti di sviluppo GNU come il classico gcc, g++, make, ecc. MinGW è un software completamente libero, che simula l'ambiente di sviluppo GCC sotto Linux sulla piattaforma Windows, fornendo un buon supporto di base per lo sviluppo cross-platform di C++ e fornendo condizioni affinché i programmatori che lavorano sotto Windows possano familiarizzare con l'organizzazione ingegneristica C++ sotto Linux.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com