Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 2340|Antwoord: 1

Introductie tot GCC, CMake, CMakelist, Make, Makefile en Ninja

[Link kopiëren]
Geplaatst op 09-07-2024 20:44:28 | | |
1. De geboorte van GCC!

In 1985, op een donkere nacht toen zijn vingers uit het zicht waren, begon een vreemde man met een baard, een klein figuur en rommelig haar een reeks C-taal compilers te schrijven. Deze epokonie, later bekend als de "grootste programmeur" en "vader van vrije software", was Richard Stallman. Na twee jaar hard werken heeft Richard Stallman, die een langere baard en rommeliger haar heeft, de eerste versie van de C-compiler voltooid, die hij GNU C Complier noemt, die nu de bron is van de beroemde GCC. Later ontwikkelde GCC zich snel, en nu kan GCC niet alleen de C-taal compileren, maar ook C++, Fortran, Pascal, Objective-C, Java, Ada en andere talen. In de jaren 80 en 90 van de vorige eeuw werden de CPU-frequentie, de grootte van de harde schijf en het geheugen van personal computers allemaal gemeten in MB of zelfs KB, en het aantal programmabestanden dat gecompileerd moest worden was klein, en GCC-commando's waren voldoende om dit aan te kunnen.

Ten tweede zijn er nieuwe problemen ontstaan! (maak & makefile)

Met de verbetering en popularisering van computerprestaties bevat een softwareproject steeds meer bronbestanden, zoals linux, wat gemakkelijk verwarrend en belastend is, wat makkelijk te verwarren en belast is, wat mensen gek maakt.

Richard Stallman en Roland McGrath ontwikkelden samen Make and Makefile om dit probleem op te lossen. De make-tool kan worden gezien als een intelligent batchverwerkingstool, dat niet de functie van compileren en linken heeft, maar een methode gebruikt die vergelijkbaar is met batchverwerking - door de door de gebruiker gespecificeerde commando's in het makefile-bestand aan te roepen. Wat is een makefile? De makefile is een scriptbestand, net als de partituur van een nummer, de make tool is als een dirigent, de dirigent geeft het hele orkest opdracht om te spelen volgens de partituur, en de make tool wordt gecompileerd en gekoppeld volgens de commando's in de makefile. Het makefile-commando bevat commando's om gcc (of een andere compiler) aan te roepen om een bronbestand te compileren.

3. Er zijn weer nieuwe problemen ontstaan! (Cmake & CMakelist)

Het makefile kan met de hand geschreven worden onder enkele eenvoudige projecten, maar als het project erg groot is, is het ook erg lastig om het makefile met de hand te schrijven. En makefiles voor verschillende platforms zijn één voor één verschenen, waaronder GNU make, QT's qmake, Microsoft's MSnmake, BSD Make(pmake), Makepp, enzovoort. Deze Make-tools volgen verschillende specificaties en standaarden, en het Makefile-formaat dat ze gebruiken varieert sterk. Dit vormt een serieus probleem: als de software cross-platform wil zijn, moet deze op verschillende platforms kunnen compileren. Als je de Make-tool hierboven gebruikt, moet je voor elke standaard een makefile schrijven, wat een enorme klus wordt, en als je het platform-makefile verandert, moet je het opnieuw aanpassen.

Dus op dat moment verscheen de tool Cmake, en Cmake kan een makefile-bestand voor bovenstaande make eenvoudiger genereren. Natuurlijk heeft cmake ook andere functies, namelijk dat het makefiles kan genereren die op het bijbehorende platform over platforms heen gebruikt kunnen worden, en je hoeft het niet zelf aan te passen. cmake is de bovenste laag van Makefile, en hun doel is om draagbare makefiles te produceren en de enorme werklast van het zelf schrijven van makefiles te vereenvoudigen. Maar wat gebruikt cmake om een makefile te genereren? Het moet ook een makefile genereren gebaseerd op een bestand genaamd CMakeLists.txt bestand (wetenschappelijke naam: configuratiebestand). Uiteindelijk CMakeLists.txt wie schrijft het document? Natuurlijk heb je het zelf geschreven.

Ten vierde, er zijn weer nieuwe problemen opgedoken! (Ninja)

Naarmate software engineering groter en complexer wordt, wordt het probleem van de trage uitvoeringssnelheid van maken steeds ernstiger.

Als gevolg daarvan lanceerde een Google-programmeur Ninja, een bouwtool gericht op snelheid. Ninja heeft niet alle geavanceerde functies, de syntaxis en het gebruik zijn heel eenvoudig, en het specificeert in detail wat je moet doen, dus het begint heel snel te compileren. Volgens tests uit de echte wereld: met meer dan 30.000 bronbestanden is het ook mogelijk om een echte build in 1 seconde te starten. Ter vergelijking: Makefiles geschreven door senior engineers doen er ook 10-20 seconden over om te beginnen met bouwen.

5. Het perfecte einde tot nu toe!

Cmake kan .ninja- en .makefile-tools genereren. Omdat veel mensen niet bekend zijn met hoe je makefile-bestanden en ninja-bestanden schrijft, heeft cmake slechts een eenvoudige beschrijving van het broncodebestand (dat wil zeggen, CMakeLists.txt bestand) nodig om automatisch een project makefile- of ninja-bestand te genereren, en vervolgens te beginnen met compileren via ninja of make.


5 minuten om make/makefile/cmake/nmake te begrijpen

Bent u onlangs gemaakt door make, cmake, makefile... ... Deze dingen zijn duizelig, bekijk het volgende artikel, misschien kun je het duidelijk begrijpen.

1. GCC
Het is de GNU Compiler Collection, of simpelweg een compiler, die veel programmeertalen kan compileren (waaronder C, C++, Objective-C, Fortran, Java, enz.).

Wanneer ons programma slechts één bronbestand heeft, kunnen we het direct compileren met het gcc-commando.

Maar wat als ons programma veel bronbestanden bevat? Bij het compileren met gcc-commando's één voor één is het gemakkelijk om in de war te raken en het werk intensief te maken, dus verschijnt de volgende make-tool.

2. maken
De make-tool kan worden gezien als een intelligent batchverwerkingstool, dat niet de functie van compileren en linken heeft, maar een methode gebruikt die vergelijkbaar is met batchverwerking - door de door de gebruiker gespecificeerde commando's in het makefile-bestand aan te roepen.

3. makefile
Wat is dit?

Simpel gezegd, net als de partituur van een lied, is de make-tool als een dirigent, de dirigent stuurt het hele orkest aan om te spelen volgens de partituur, en de make-tool compileert en linkt volgens de commando's in het makefile. Het makefile-commando bevat commando's om gcc (of een andere compiler) aan te roepen om een bronbestand te compileren.

De makefile kan handmatig worden genomen in sommige eenvoudige projecten, maar als het project erg groot is, is handgeschreven makefile ook erg lastig.

4. Cmake
Cmake kan eenvoudig een makefile-bestand genereren voor de bovenstaande make. Natuurlijk heeft cmake ook betere functies, namelijk dat het makefiles kan genereren die op het bijbehorende platform over platforms heen gebruikt kunnen worden, zodat we het niet zelf hoeven aan te passen.

Maar wat gebruikt cmake om een makefile te genereren? Het moet ook een makefile genereren gebaseerd op een bestand genaamd CMakeLists.txt bestand (wetenschappelijke naam: configuratiebestand).

5. CMakeList.txt
Uiteindelijk CMakeLists.txt wie schrijft het document? Liefje, het is met je eigen hand geschreven.

6. nmake
Wat is nmake?

nmake is een zijcommando in Microsoft Visual Studio, dat VS moet installeren, wat eigenlijk gelijk kan zijn aan Linux make, begrepen?

Overgedragen van:

De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.





Vorig:ERP Kingdee Cloud Starry Sky (1) Eenvoudig begrip
Volgend:Rocky Linux 9-pakket niet gevonden: Geen match voor het argument: xxx
 Huisbaas| Geplaatst op 08-12-2024 08:57:06 |
MinGW biedt een eenvoudige en handige, op GCC gebaseerde programma-ontwikkelomgeving voor Windows. MinGW verzamelt een verzameling gratis Windows-gebruiksheader- en bibliotheekbestanden; Het integreert ook GNU (http://www.gnu.org/) tools, vooral GNU-ontwikkelingstools zoals Classic GCC, G++, make, enzovoort. MinGW is volledig vrije software, die de GCC-ontwikkelomgeving onder Linux simuleert op het Windows-platform, goede basisondersteuning biedt voor de cross-platform ontwikkeling van C++, en voorwaarden biedt voor programmeurs die onder Windows werken om vertrouwd te raken met de C++ engineeringorganisatie onder Linux.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com