Mga sistema ng pagtitipon. Higit pa sa simpleng pag-configure, gumawa, gumawa ng pag-install

Lahat o halos lahat (at kung hindi ka mapalad) kailangan naming mag-ipon ng isang programa mula sa source code. Sa totoo lang, sa karamihan ng mga proyekto sapat na ang gawin ./configure && make && make install upang mai-install ang programa, ngunit makikita natin ang iba't ibang mga kahalili:

GNU Gumawa

Ang GNU Make ay isang mababang antas ng sistema ng pagtitipon, ilang mga bagay ang na-configure at walang mga pagsubok na isinagawa:

Pros:

  • Laganap na laganap
  • Simpleng maintindihan
  • Mabilis

Kahinaan:

  • Maliit na mai-configure
  • Mahirap panatilihin
  • Hindi nagsasagawa ng mga pagsubok

make

BSD Gumawa

Ang BSD Make ay isa pang bersyon ng Gawing kasalukuyang ginagamit ng * BSD operating system. Ito ay naiiba mula sa GNU Make, ang pagiging pinaka-komprehensibong BSD Gumawa sa pag-andar bagaman hindi gaanong kalat.

Pros:

  • Mabilis
  • Simpleng maintindihan
  • Mas maraming mga tampok kaysa sa GNU Make

Kahinaan:

  • Hindi laganap sa mundo ng Linux
  • Hindi nagsasagawa ng mga pagsubok
  • Maliit na mai-configure
  • Mahirap panatilihin

make

Mga Autootool

Ang Autotools ay ang opisyal na sistema ng GNU at bumubuo ng isang script na tinatawag na configure na dapat naming tawagan upang makabuo ng kaukulang Makefile mula sa GNU Make. Malawak itong kumalat, subalit, maraming tao (kasama ko mismo) ang nag-iisip na ito ay masyadong masalimuot, mahirap, mabagal at hindi gaanong katugma.

Pros:

  • Mataas na mai-configure
  • Laganap na laganap

Kahinaan:

  • Maliit na kakayahang dalhin sa pagitan ng mga sistemang Hindi-UNIX
  • Gumawa ng masyadong maraming mga pagsubok (suriin ang LAHAT, at LAHAT NG LAHAT)
  • Napakabagal kapag nagtatakda
  • Hindi magandang pag-uugnay sa likod

./configure && make

CMake

(Ang aking paboritong system) Ang CMake ay isang sistema na darating upang makabawi sa mga pagkukulang ng Autotools sa maraming aspeto, tulad ng kahila-hilakbot na paatras na pagkakatugma at kakayahang dalhin. Ang pagpapabuti din ng sistema ng pagsubok na lubos na mai-configure para sa mga pangangailangan ng bawat proyekto. Ang totoo ay parami nang paraming mga proyekto ang gumagamit ng CMake tulad ng KDE, PortAudio, Ogre3D, atbp. Makikilala natin ang ganitong uri ng mga system salamat sa isang file na CMakeLists.txt na makakabuo ng isang Makefile o isang proyekto para sa Eclipse o CodeBlocks

Pros:

  • Mabilis
  • Mahusay na suporta sa cross-platform
  • Maaari mong tukuyin ang mga pagsubok sa isang napapasadyang paraan

Kahinaan:

  • Mahirap intindihin sa una
  • Kailangan mong gumana sa isang abstraction na maaaring nakakatakot sa una
  • Konting kumalat bagaman unti unting lumalaki

cmake . && make

Q Gawin

Ang QMake ay isang sistema na dinisenyo ng Trolltech upang makatipon ng mga proyektong ginawa sa Qt. Sa ganitong paraan ay naglalagay ang qmake ng maraming diin sa Qt at karaniwang ang format na ginamit ng mga IDE tulad ng QtCreator. Ito ay lubos na tanyag sa mga proyekto ng Qt ngunit hindi ito matatagpuan sa labas ng kapaligirang ito:

Pros:

  • Napakahusay na isinama sa Qt
  • Mabilis
  • Mahusay na multiplatform sa loob ng Qt

Kahinaan:

  • Hindi pangkaraniwan sa labas ng Qt apps

qmake . && make

SCons

Ang SCons ay isang sistemang nakabatay sa Python para sa pag-iipon ng mga proyekto ng C / C ++. Hindi tulad ng Autotools, CMake o QMake; Ang SCons ay hindi nagtatayo ng isang Makefile. Ang SCons ay napaka nababago ngunit marahil ito ang pinakamabagal sa simpleng operasyon
Pros:

  • Madaling pagbabago
  • Dalhin ang patas na mga pagsubok

Kahinaan:

  • Konting kumalat
  • Mabagal

scons

Palakasin.Jam

Ang Boost.Jam ay isang bersyon ng Perforce Jam na ginagamit sa mga tanyag na aklatan ng C ++ Boost, kahit na ang system ng pagtitipon ay maaaring magamit nang magkahiwalay. Hindi tulad ng GNU Make, Boost.Jam ay gumagamit ng Jamfiles, na isang pinahusay na bersyon ng Makefiles. Ang mga ito ay lubos na tanyag sa kapaligiran ng BeOS / Zeta / Haiku.

Pros:

  • Mabilis
  • Ang pinakamaikling pagsulat

Kahinaan:

  • Konting kumalat
  • Hirap sa pagganap ng mga pagsubok

bjam

Ninja

Ang Ninja ay isang sistemang binuo ng Google upang magbigay ng isang napakabilis na sistema ng pagbuo na orihinal na dinisenyo upang maging ng proyekto ng Chromium. Ang Ninja ay hindi idinisenyo upang madaling mabago, ayon sa sarili nitong mga may-akda, ang isang system na bumubuo ng Ninja ay dapat na matagpuan. Ang mga inirekumenda ay ang CMake at gyp.

Pros:

  • Muy rápido

Kahinaan:

  • Kailangan mo ng isa pang system upang itlog ang Ninja
  • Konting kumalat

ninja

mga iba

Maaari kang gumamit ng anumang iba pang system tulad ng iyong sariling bash o python script. Mayroon ding mga generator para sa iba pang mga hindi katutubong wika na maaaring magamit tulad ng Gradle, Maven, gyp, atbp.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   abimaelmartell dijo

    Ang make ay hindi isang sistema ng pagtitipon, ito ay isang generator ng binaries (o mga target) mula sa source code nito. Maaari din itong magamit bilang isang tagatakbo ng gawain.

    Naiiba ako sa iyo na ang paggawa ng BSD ay mas malawak sa pag-andar, ang GNU gumawa ay mas kumpleto, mayroon itong higit na pag-andar. At sinasabi ko ito mula sa aking sariling karanasan, sa BSD palagi kong na-install ang GNU make dahil ang BSD make ay napaka-simple kumpara sa GNU make.

    Sumasang-ayon ako sa iyo na ang Autotools ay medyo masalimuot, mas gusto kong gamitin lamang ang Makefile. Ang mga makefile na nabuo ng Autotools ay mahirap i-debug.

    Pagbati!

    1.    AdrianArroyoStreet dijo

      Salamat sa komento!
      Sa palagay ko, ang GNU make ay palaging naging mas tradisyonal at tapat sa orihinal na programa sa paggawa at ang paggawa ng BSD ay palaging mas makabago ngunit maaaring napansin ko ang iba pang mga bagay kapag ginagawa ang paghahambing.

      Ang mga autotool ay talagang isang malaking sakit ng ulo. Bilang isang nag-ambag sa operating system ng Haiku kinailangan kong mag-port ng software na may mga autotool at impiyerno ito. Mayroong ilang mga kaso na natapos akong lumikha ng Makefile o sa CMakeLists.txt bago ayusin ang gulo na ito.

  2.   Chuck daniels dijo

    Kasalukuyan akong gumagamit ng Premake4, napaka-configure at simple batay sa mga script ng Lua. Tingnan kung hindi mo alam ito.
    Binabati kita sa artikulo, simple at madaling maintindihan, mahusay na sanggunian.

  3.   Mga Bato dijo

    Ginagamit ang 'make check' upang suriin ang compilation pagkatapos gamitin ang make
    Pagbati po