전부 또는 거의 전부 (그리고 운이 좋지 않다면) 우리는 소스 코드에서 프로그램을 컴파일해야했습니다. 실제로 대부분의 프로젝트에서 프로그램을 설치하기 위해 ./configure && make && make install을 수행하는 것으로 충분하지만 다른 대안을 살펴볼 것입니다.
GNU 메이크
GNU Make는 저수준 컴파일 시스템으로, 구성이 거의없고 테스트가 수행되지 않습니다.
장점 :
- 매우 널리 퍼짐
- 이해하기 쉬움
- 빠른
단점 :
- 약간의 구성 가능
- 유지하기 어려움
- 테스트를 수행하지 않음
make
BSD 만들기
BSD Make는 현재 * BSD 운영 체제에서 사용되는 Make의 또 다른 버전입니다. GNU Make와는 다르지만 덜 널리 퍼져 있지만 기능면에서 가장 포괄적 인 BSD Make입니다.
장점 :
- 빠른
- 이해하기 쉬움
- GNU Make보다 더 많은 기능
단점 :
- Linux 세계에서 널리 퍼지지 않음
- 테스트를 수행하지 않음
- 약간의 구성 가능
- 유지하기 어려움
make
자동 도구
Autotools는 공식 GNU 시스템이며 GNU Make에서 해당 Makefile을 생성하기 위해 호출해야하는 configure라는 스크립트를 생성합니다. 광범위하게 확장되었지만 점점 더 많은 사람들 (나 자신을 포함)이 너무 번거롭고 어렵고 느리고 호환되지 않는다고 생각합니다.
장점 :
- 고도로 구성 가능
- 매우 널리 퍼짐
단점 :
- 비 UNIX 시스템 간의 이식성이 거의 없음
- 너무 많은 테스트를 수행합니다 (모든 항목을 확인하고 모든 항목이 모두 있음).
- 구성시 매우 느림
- 이전 버전과의 호환성 부족
./configure && make
CMake
(내가 가장 좋아하는 시스템) CMake는 끔찍한 하위 호환성 및 이식성과 같은 여러 측면에서 Autotools의 단점을 보완하는 시스템입니다. 또한 각 프로젝트의 요구에 맞게 구성 가능한 테스트 시스템을 개선합니다. 사실 점점 더 많은 프로젝트에서 KDE, PortAudio, Ogre3D 등과 같은 CMake를 사용합니다. Eclipse 또는 CodeBlocks 용 Makefile 또는 프로젝트를 생성하는 CMakeLists.txt 파일 덕분에 이러한 유형의 시스템을 인식 할 수 있습니다.
장점 :
- 빠른
- 뛰어난 크로스 플랫폼 지원
- 매우 사용자 정의 가능한 방식으로 테스트를 정의 할 수 있습니다.
단점 :
- 처음에는 이해하기 어렵다
- 처음에는 무서워 할 수있는 추상화로 작업해야합니다.
- 조금씩 자라지 만 조금 퍼져
cmake . && make
큐메이크
QMake는 Qt로 만든 프로젝트를 컴파일하기 위해 Trolltech에서 설계 한 시스템입니다. 이런 식으로 qmake는 Qt를 많이 강조하고 일반적으로 QtCreator와 같은 IDE에서 사용하는 형식입니다. Qt 프로젝트에서 꽤 인기가 있지만이 환경 밖에서는 찾을 수 없습니다.
장점 :
- Qt와 매우 잘 통합됨
- 빠른
- Qt 내에서 좋은 멀티 플랫폼
단점 :
- Qt 앱 외부에서는 흔하지 않음
qmake . && make
SC콘
SCons는 C / C ++ 프로젝트를 컴파일하기위한 Python 기반 시스템입니다. Autotools, CMake 또는 QMake와 달리; SCons는 Makefile을 빌드하지 않습니다. SCons는 매우 수정 가능하지만 간단한 작업에서 가장 느릴 수 있습니다.
장점 :
- 쉬운 수정
- 공정한 테스트를
단점 :
- 약간 퍼짐
- 천천히
scons
부스트.잼
Boost.Jam은 컴파일 시스템을 별도로 사용할 수 있지만 인기있는 C ++ Boost 라이브러리에서 사용되는 Perforce Jam 버전입니다. GNU Make와 달리 Boost.Jam은 Makefile의 개선 된 버전 인 Jamfile을 사용합니다. BeOS / Zeta / Haiku 환경에서 매우 인기가 있습니다.
장점 :
- 빠른
- 작성하는 가장 짧은
단점 :
- 약간 퍼짐
- 테스트 수행의 어려움
bjam
닌자
Ninja는 원래 Chromium 프로젝트 용으로 설계된 초고속 빌드 시스템을 제공하기 위해 Google에서 개발 한 시스템입니다. Ninja는 쉽게 수정할 수 있도록 설계되지 않았습니다. 자체 작성자에 따르면 Ninja를 생성하는 시스템을 찾아야합니다. 권장되는 것은 CMake 및 gyp입니다.
장점 :
- 뮤 라 피드
단점 :
- Ninja를 생성하려면 다른 시스템이 필요합니다.
- 약간 퍼짐
ninja
다른 사람
자신의 bash 또는 python 스크립트와 같은 다른 시스템을 사용할 수 있습니다. Gradle, Maven, gyp 등과 같이 사용할 수있는 다른 비 국어 용 생성기도 있습니다.
Make는 컴파일 시스템이 아니며 소스 코드에서 바이너리 (또는 대상)를 생성합니다. 태스크 러너로도 사용할 수 있습니다.
BSD make는 기능면에서 더 광범위하고 GNU make는 더 완벽하며 더 많은 기능을 가지고 있다는 점이 다릅니다. 그리고 저는 제 경험으로 이것을 말합니다. BSD에서는 항상 GNU make를 설치해야합니다. BSD make는 GNU make에 비해 매우 간단하기 때문입니다.
Autotools가 매우 번거 롭다는 데 동의하며 Makefile을 사용하는 것을 선호합니다. Autotools에 의해 생성 된 Makefile은 디버그하기 어렵습니다.
안녕하십니까!
의견 주셔서 감사합니다!
제 생각에는 GNU make는 항상 원래 make 프로그램에 더 전통적이고 충실했고 BSD make는 항상 더 혁신적 이었지만 비교를 할 때 다른 것을 눈치 챘을 수도 있습니다.
Autotools는 정말 큰 골칫거리입니다. Haiku 운영 체제의 공헌자로서 저는 autotools로 소프트웨어를 이식해야했고 그것은 지옥입니다. 그 혼란을 고치기 전에 Makefile 또는 CMakeLists.txt를 생성 한 경우는 거의 없습니다.
저는 현재 Lua 스크립트를 기반으로 매우 구성 가능하고 간단한 Premake4를 사용하고 있습니다. 모르는 경우 한 번보세요.
기사에 대한 축하, 간단하고 간결하고 훌륭한 참조.
'make check'는 make를 사용한 후 컴파일을 확인하는 데 사용됩니다.
인사말