만들 수있는 유망한 대안?
나는 수년 동안 make와 makefile을 사용해 왔고, 개념은 건전하지만 구현은 원하는 것이 있습니다.
문제를 지나치게 복잡하게하지 않는 좋은 대안을 찾은 사람이 있습니까?
SCons를 확인하십시오 . 예를 들어 Doom 3과 Blender는 그것을 사용합니다.
크로스 플랫폼 개발을 위해 CMake로 맹세하는 많은 친구가 있습니다.
크로스 플랫폼 Python, Tcl 및 Java 바인딩이있는 C ++ 라이브러리 인 VTK에 사용되는 빌드 시스템 입니다. 아마도 그 많은 기능으로 발견 할 수있는 가장 덜 복잡한 일이라고 생각합니다.
항상 표준 autotools를 사용해 볼 수 있습니다. Automake 파일은 Unix에서만 실행하고 C / C ++를 고수하는 경우 매우 쉽게 조합 할 수 있습니다. 통합은 더 복잡하며 autotools는 가장 단순한 시스템과는 거리가 멀습니다.
일부 그놈 프로젝트는 waf 로 마이그레이션되었습니다 .
Scons와 같이 Python 기반이지만 독립 실행 형이므로 다른 개발자가 좋아하는 빌드 도구를 설치하도록 요구하는 대신 독립 실행 형 빌드 스크립트를 프로젝트에 복사하기 만하면됩니다.
doit 은 파이썬 도구입니다. 빌드 도구의 개념을 기반으로하지만 더 일반적입니다.
- 작업 / 규칙이 최신 상태인지 정의 할 수 있습니다 (타임 스탬프 확인뿐 아니라 대상 파일이 필요하지 않음).
- 종속성은 다른 작업에 의해 동적으로 계산 될 수 있습니다.
- 작업의 동작은 파이썬 함수 또는 쉘 명령 일 수 있습니다.
Rake를 사용하는 것이 좋습니다 . 제가 찾은 가장 쉬운 도구입니다.
내가 사용한 다른 좋은 도구는 Ruby가 당신의 것이 아니라면 다음과 같습니다.
의주의 ninja
에 의해 영향을 받는다 빌드 도구 (v1.8.2 2017년 9월) tup
와 redo
.
빌드 파일 생성기 cmake
(예 : Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...)는 ninja
버전 2.8.8 (2012 년 4 월)부터 빌드 파일을 생성 할 수도 있으며, ninja
이제 afaik 은 cmake
.
make
도구 보다 성능이 뛰어납니다 (더 나은 종속성 추적 및 병렬화 됨).
cmake
이미 확립 된 도구입니다. 구성 파일을 수정하지 않고 나중에 언제든지 빌드 도구를 선택할 수 있습니다. 따라서 향후 지원 될 더 나은 빌드가 개발되면 cmake
편리하게 전환 할 수 있습니다.
c / c ++의 경우 컴파일 시간을 개선하는 것은 전처리기를 통해 포함 된 헤더 (특히 boost & eigen 과 같은 헤더 전용 라이브러리를 사용하는 경우 )로 인해 제한 될 수 있습니다. 이는 모듈 제안 (기술 검토에서 C ++ 11 또는 결국 C ++ 1y). 이 문제에 대한 자세한 내용은 이 프레젠테이션 을 확인하십시오 .
나는 makefile과 같은 것을 읽고 쓰기를 매우 쉽게 만들려고하는 술 이라는 도구를 썼다 .
그것은 당신이하려는 일에 달려 있습니다. 경우 모든 당신이 원하는이 메이크업 스타일의 타겟 종속성 및 명령 호출을하고, 다음 만들기 실제로 작업에 대한 더 나은 도구 중 하나입니다. :-) Rake는 매우 훌륭하지만 일부 간단한 경우에는 어색 할 수 있습니다. Ant는 물론 장황한 도시이지만 Java와 유사한 언어 (Scala 및 Groovy 포함) 빌드를 더 잘 지원합니다. 또한 Ant는 모든 곳에서 사용할 수 있습니다 . 그것이 내가 그것을 사용하는 주된 이유입니다. Windows에서 일관되게 작동하기 때문에 실제로 Make보다 훨씬 더 교차 플랫폼입니다.
Java와 유사한 라이브러리에 대한 종속성 관리를 원한다면 Maven이 표준 선택이지만 개인적으로 Buildr가 훨씬 좋습니다. 더 빠르고 쉽게 사용자 정의 할 수 있습니다 (Rake 기반). 불행히도 아직 Maven만큼 유비쿼터스하지는 않습니다.
나는 여전히 많은 대안을 고려한 후에 make를 선호합니다. 컴파일러 또는 fastdep과 같은 것을 통해 종속성을 자동 생성하면 할 일이 많지 않습니다. 특히 빌드 스크립트가 구현 언어에 연결되는 것을 원하지 않으며 더 읽기 쉬운 대안이있을 때 XML로 작성하는 것을 좋아하지 않습니다. 범용 언어를 노출하는 도구는 장점이 있지만 다른 해석 언어는 그렇지 않습니다 (afaik). Make의 문제점은 무엇입니까? make에서 벗어나는 것에 대한 귀하의 관점에 호소 할 수 있습니다.
/ 앨런
Ruby의 make 시스템은 rake라고합니다 : http://rake.rubyforge.org/
매우 유망 해 보입니다.
항상 Ant : http://ant.apache.org 가 있는데, 개인적으로 끔찍하다고 생각합니다. 그러나 Java 개발을위한 사실상의 표준입니다.
여기서 올바른 질문을하고 있는지 잘 모르겠습니다.
당신은 단순화 된 만들기를 원하십니까? 이 경우 make에 매우 익숙한 사람이 문제를 단순화 할 일련의 (M | m) akefile을 생성해야합니다.
아니면 기본 기술을보고 싶습니까? 코드 디자인에 내장되고 적용되는 계약 별 설계 유형 아키텍처를 적용하고 싶습니까? 아니면 언어 자체, 예를 들어 Ada 및 사양 (인터페이스) 및 본문 (구현)의 개념?
당신이 추구하는 방향은 그러한 질문의 잠재적 인 결과에 확실히 영향을 미칠 것입니까?
기본적으로, 실제로 변경된 구성 요소만으로 시스템을 구축하는 새로운 방법과 설계에 의해 내장 된 메커니즘을 가진 새로운 기술을 채택하는 것입니다.
직접적인 대답이 아니에요. 어떤 길을 가고 싶은지 평가 해보고 싶었습니다.
건배,
Rob
RTDA의 FlowTracer는 대규모 환경 (수만 개의 작업)에서 상업적으로 사용되는 또 다른 좋은 선택입니다. http://www.rtda.com/flowtracer-design-flow-infrastructure-software
작업에 대한 색상 코드 상자와 파일에 대한 타원이있는 종속성 그래프를 보여주는 GUI가 있습니다. 작업 및 파일 수가 많아지면 FlowTracer와 같은 GUI 기반 도구가 매우 중요합니다.
The initial setup cost is higher than Make. There's a learning curve for setting up your first flow using it. After that, it gets quicker.
참고URL : https://stackoverflow.com/questions/66800/promising-alternatives-to-make
'Nice programing' 카테고리의 다른 글
javascript를 사용하여 HTML 페이지의 div를 pdf로 다운로드 (0) | 2020.10.24 |
---|---|
동적 페이지 용 스크래피가있는 셀레늄 (0) | 2020.10.24 |
jQuery로 Accept HTTP 헤더를 올바르게 설정할 수 없습니다. (0) | 2020.10.24 |
IIS Express를 수동으로 시작하는 방법 (0) | 2020.10.24 |
numpy를 사용하는 배열의 효율적인 임계 값 필터 (0) | 2020.10.24 |