나는 수년 동안 make와 makefile을 사용해 왔고, 개념은 건전하지만 구현은 원하는 것이 있습니다.
문제를 지나치게 복잡하게하지 않는 좋은 대안을 찾은 사람이 있습니까?
나는 수년 동안 make와 makefile을 사용해 왔고, 개념은 건전하지만 구현은 원하는 것이 있습니다.
문제를 지나치게 복잡하게하지 않는 좋은 대안을 찾은 사람이 있습니까?
scons
, luigi
(적응 shouldsee/luck
) snakemake
,, waf
. 많은 Java 대안이 있지만이 공간은 너무 작아서 모두 적어 둘 수 없습니다.
답변:
SCons를 확인하십시오 . 예를 들어 Doom 3과 Blender는 그것을 사용합니다.
크로스 플랫폼 개발을 위해 CMake로 맹세하는 많은 친구들이 있습니다.
크로스 플랫폼 Python, Tcl 및 Java 바인딩이있는 C ++ 라이브러리 인 VTK에 사용되는 빌드 시스템 입니다. 아마도 그 많은 기능으로 찾을 수있는 가장 덜 복잡한 일이라고 생각합니다.
항상 표준 autotools를 사용해 볼 수 있습니다. Automake 파일은 Unix에서만 실행하고 C / C ++를 고수하는 경우 매우 쉽게 조합 할 수 있습니다. 통합은 더 복잡하며 autotools는 가장 단순한 시스템과는 거리가 멀습니다.
의주의 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). 이 문제에 대한 자세한 내용은 이 프레젠테이션 을 확인하십시오 .
tup
있는지에 따라 달라집니다 fuse
. redo
2 년 동안 업데이트되지 않았습니다. 추천 ninja
합니다.
나는 makefile과 같은 것을 읽고 쓰기를 매우 쉽게 만들려고하는 술 이라는 도구를 썼다 .
make
구문 과 어떻게 대조되는지에 대한 약간의 정교함과 함께 답의 일부가되어야 합니다.
그것은 당신이하려는 일에 달려 있습니다. 경우 모든 당신이 원하는이 메이크업 스타일의 타겟 종속성 및 명령 호출을하고, 다음 만들기 실제로 작업에 대한 더 나은 도구 중 하나입니다. :-) Rake는 매우 훌륭하지만 간단한 경우에는 어색 할 수 있습니다. Ant는 물론 장황한 도시이지만 Java와 유사한 언어 (Scala 및 Groovy 포함) 빌드를 더 잘 지원합니다. 또한 Ant는 모든 곳에서 사용할 수 있습니다 . 그것이 내가 그것을 사용하는 주된 이유입니다. Windows에서 일관되게 작동하기 때문에 실제로 Make보다 더 많은 크로스 플랫폼입니다.
Java와 유사한 라이브러리에 대한 종속성 관리를 원한다면 Maven이 표준 선택이지만 개인적으로 Buildr가 훨씬 좋습니다. 더 빠르고 쉽게 사용자 정의 할 수 있습니다 (Rake 기반). 불행히도 아직 Maven만큼 유비쿼터스하지는 않습니다.
Ruby의 make 시스템은 rake라고합니다 : http://rake.rubyforge.org/
매우 유망 해 보입니다.
항상 Ant : http://ant.apache.org 가 있는데, 개인적으로 끔찍하다고 생각합니다. 그러나 이것은 Java 개발을위한 사실상의 표준입니다.
나는 많은 대안을 고려한 후에도 여전히 make를 선호합니다. 컴파일러 또는 fastdep과 같은 것을 통해 종속성을 자동 생성하면 할 일이별로 없습니다. 특히 빌드 스크립트가 구현 언어에 연결되는 것을 원하지 않으며 더 읽기 쉬운 대안이있을 때 XML로 작성하는 것을 좋아하지 않습니다. 범용 언어를 노출하는 도구는 장점이 있지만 다른 해석 언어는 그렇지 않습니다 (afaik). Make의 문제점은 무엇입니까? make에서 벗어나는 것에 대한 귀하의 관점에 호소 할 수 있습니다.
/ 앨런
RTDA의 FlowTracer는 대규모 환경 (수만 개의 작업)에서 상업적으로 사용되는 또 다른 좋은 선택입니다. http://www.rtda.com/flowtracer-design-flow-infrastructure-software
작업에 대한 색상 코드 상자와 파일에 대한 타원이있는 종속성 그래프를 보여주는 GUI가 있습니다. 작업 및 파일 수가 많아지면 FlowTracer와 같은 GUI 기반 도구가 매우 중요합니다.
초기 설정 비용은 Make보다 높습니다. 이를 사용하여 첫 번째 흐름을 설정하기위한 학습 곡선이 있습니다. 그 후에는 더 빨라집니다.
여기서 올바른 질문을하고 있는지 잘 모르겠습니다.
당신은 단순화 된 만들기를 원하십니까? 이 경우 make에 매우 익숙한 사람이 문제를 단순화 할 일련의 (M | m) akefile을 생성해야합니다.
아니면 기본 기술을보고 싶습니까? 코드 디자인에 내장되고 적용되는 계약 별 설계 유형 아키텍처를 적용하고 싶습니까? 아니면 언어 자체, 예를 들어 Ada 및 사양 (인터페이스) 및 본문 (구현)의 개념?
당신이 추구하는 방향은 그러한 질문의 잠재적 인 결과에 확실히 영향을 미칠 것입니까?
기본적으로 실제로 변경된 구성 요소만으로 시스템을 구축하는 새로운 방법과 설계에 의해 내장 된 메커니즘을 가진 새로운 기술을 채택하는 것입니다.
직접적인 대답이 아니에요. 어떤 길을 가고 싶은지 평가 해보고 싶었습니다.
건배,
Rob
make
너무 단순합니다.