Kompilācijas sistēmas. Papildus vienkāršai konfigurēšanai, izgatavošanai, instalēšanai

Visi vai gandrīz visi (un, ja jums nav paveicies), mums bija jāsastāda programma no avota koda. Patiesībā lielākajā daļā projektu programmas instalēšanai pietiek ar ./configure && make && make install, taču mēs redzēsim dažādas alternatīvas:

GNU Marka

GNU Make ir zema līmeņa kompilācijas sistēma, tiek konfigurētas dažas lietas un netiek veikti testi:

Pros:

  • Ļoti plaši izplatīta
  • Vienkārši saprotams
  • Ātri

Mīnusi:

  • Maz konfigurējams
  • Grūti uzturēt
  • Neveic testus

make

BSD izgatavošana

BSD Make ir vēl viena Make versija, kuru pašlaik izmanto * BSD operētājsistēmas. Tas atšķiras no GNU Make, jo tas ir visaptverošākais BSD Make funkcionalitātē, lai gan tas ir mazāk izplatīts.

Pros:

  • Ātri
  • Vienkārši saprotams
  • Vairāk funkciju nekā GNU Make

Mīnusi:

  • Nav plaši izplatīta Linux pasaulē
  • Neveic testus
  • Maz konfigurējams
  • Grūti uzturēt

make

Automobiļi

Autotools ir oficiālā GNU sistēma, un tā ģenerē skriptu ar nosaukumu configure, kas mums jāzvana, lai ģenerētu atbilstošo GNU Make Makefile. Tas tiek plaši izmantots, tomēr arvien vairāk cilvēku (arī es) domāju, ka tas ir pārāk apgrūtinošs, grūts, lēns un ne pārāk saderīgs.

Pros:

  • Ļoti konfigurējams
  • Ļoti plaši izplatīta

Mīnusi:

  • Maza pārnesamība starp sistēmām, kas nav UNIX
  • Veiciet pārāk daudz testu (pārbaudiet VISU un viss ir VISS)
  • Iestatot ļoti lēni
  • Slikta savietojamība atpakaļ

./configure && make

CMake

(Mana vēlamā sistēma) CMake ir sistēma, kas kompensē Autotools trūkumus daudzos aspektos, piemēram, to briesmīgajā atpakaļ savietojamībā un pārnesamībā. Uzlabo arī testa sistēmu, kas ir ļoti konfigurējama katra projekta vajadzībām. Patiesība ir tāda, ka arvien vairāk projektu izmanto CMake, piemēram, KDE, PortAudio, Ogre3D utt. Mēs varam atpazīt šāda veida sistēmu, pateicoties failam CMakeLists.txt, kas ģenerēs Makefile vai Eclipse vai CodeBlocks projektu.

Pros:

  • Ātri
  • Lielisks starpplatformu atbalsts
  • Jūs varat definēt testus ļoti pielāgojami

Mīnusi:

  • Sākumā grūti saprast
  • Jāstrādā ar abstrakciju, kas sākumā var būt biedējoša
  • Maz izplatījās, kaut arī pamazām aug

cmake . && make

QMake

QMake ir Trolltech izstrādāta sistēma, lai apkopotu Qt projektus. Tādā veidā qmake lielu uzsvaru liek uz Qt un parasti ir formāts, ko izmanto IDE, piemēram, QtCreator. Tas ir diezgan populārs Qt projektos, taču tas nav atrodams ārpus šīs vides:

Pros:

  • Ļoti labi integrēts Qt
  • Ātri
  • Laba daudzplatforma Qt robežās

Mīnusi:

  • Retāk ārpus Qt lietotnēm

qmake . && make

SCons

SCons ir uz Python balstīta sistēma C / C ++ projektu apkopošanai. Atšķirībā no Autotools, CMake vai QMake; SCons neveido Makefile. SCons ir ļoti modificējams, bet tas, iespējams, ir vislēnākais vienkāršās darbībās
Pros:

  • Viegla modifikācija
  • Izpildiet godīgos testus

Mīnusi:

  • Maz izplatījās
  • Lēni

scons

Boost.Jam

Boost.Jam ir Perforce Jam versija, kas tiek izmantota populārajās C ​​++ Boost bibliotēkās, lai gan kompilācijas sistēmu var izmantot atsevišķi. Atšķirībā no GNU Make, Boost.Jam izmanto Jamfiles, kas ir uzlabota Makefiles versija. Tie ir diezgan populāri BeOS / Zeta / Haiku vidē.

Pros:

  • Ātri
  • Īsāk uzrakstīt

Mīnusi:

  • Maz izplatījās
  • Grūtības veikt testus

bjam

ninja

Ninja ir Google izstrādāta sistēma, lai nodrošinātu īpaši ātru būvēšanas sistēmu, kas sākotnēji tika izstrādāta kā Chromium projekta sistēma. Ninja nav izstrādāta tā, lai to būtu viegli modificēt, pēc tās autoru domām, jāatrod sistēma, kas ģenerē Ninja. Ieteicamie ir CMake un gyp.

Pros:

  • Muy rápido

Mīnusi:

  • Lai radītu Ninju, jums nepieciešama cita sistēma
  • Maz izplatījās

ninja

pārējie

Varat izmantot jebkuru citu sistēmu, piemēram, savu bash vai python skriptu. Ir arī ģeneratori citām valodām, kuras nav dzimtās, kuras var izmantot, piemēram, Gradle, Maven, gyp utt.


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

4 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   abimaelmartell teica

    Make nav kompilācijas sistēma, tā ir bināru (vai mērķu) ģenerators no tā avota koda. To var izmantot arī kā uzdevumu skrējēju.

    Es ar jums atšķiros, ka BSD make ir funkcionalitātes ziņā plašāks, GNU make ir pilnīgāks, tam ir lielāka funkcionalitāte. Un es to saku no savas pieredzes, jo BSD man vienmēr ir jāinstalē GNU make, jo BSD make ir ļoti vienkārša, salīdzinot ar GNU make.

    Es jums piekrītu, ka Autotools ir diezgan apgrūtinoša, es gribētu vienkārši izmantot Makefile. Autotools ģenerētos makefailus ir grūti atkļūdot.

    Sveicieni!

    1.    AdrianArroyoStreet teica

      Paldies par komentāru!
      Manuprāt, GNU make vienmēr ir bijis tradicionālāks un uzticīgāks oriģinālajai make program, un BSD make vienmēr ir bijis novatoriskāks, taču, iespējams, esmu pamanījis citas lietas, veicot salīdzinājumu.

      Automātiskās ierīces patiešām ir lielas galvassāpes. Man kā Haiku operētājsistēmas līdzstrādniekam ir nācies pārnest programmatūru ar autotools, un tā ir ellē. Nav maz gadījumu, kad es izveidoju Makefile vai CMakeLists.txt, pirms laboju šo haosu.

  2.   Čaks daniels teica

    Pašlaik es izmantoju Premake4, ļoti konfigurējamu un vienkāršu, pamatojoties uz Lua skriptiem. Ieskaties, ja to nezini.
    Apsveicu ar rakstu, vienkāršs un kodolīgs, lieliska atsauce.

  3.   Kauli teica

    'make check' tiek izmantots, lai pārbaudītu kompilāciju pēc marka lietošanas
    Sveiciens