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.
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!
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.
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.
Ginagamit ang 'make check' upang suriin ang compilation pagkatapos gamitin ang make
Pagbati po