'make'대신 'make clean'을 사용해야하는 일반적인 규칙이 있습니까?


11

지금 다중 파일 프로그램을 작성 중이며 어떤 이유로 든 대부분의 상황에서 직관적으로 수행해야한다고 생각하는 것처럼 'make'만 실행하면 프로그램이 실패합니다. 문제에 대한 자세한 정보를 제공 할 수는 있지만 중요한 것은 'make clean'을 사용할 때 문제가 발생한다는 것입니다. 그래서 누군가가 'make'대신 'make clean'을 실행하는 일반적인 경험 법칙을 알고 있는지 궁금합니다.

답변:


17

소스 코드를 패키징하려는 경우 (따라서 빌드 된 오브젝트가 필요하지 않음) 또는 빌드 된 오브젝트가 불량하다고 믿을만한 이유가있는 경우 두 가지 상황에서 make clean을 실행합니다.

귀하의 경우 버그가 많은 Makefile의 결과 일 수있는 문제를 해결하기 위해 'make clean'을 사용하고 있습니다. 거기에 무언가가 있어야 할 때 다시 컴파일하지 않고 출력 바이너리가 잘못됩니다.

프로젝트의 복잡성 및 사용 방법에 따라 발생할 수있는 여러 가지 이유가 있지만 그 장점은 Makefile을 디버깅하는 데 시간을 소비해야한다는 것입니다.


6
업그레이드 된 컴파일러, 새 버전의 라이브러리 등과 같은 "빌드 환경의 일부 변경"을 잊어 버리는 경우가 있습니다. 이러한 경우에는 모든 모듈이 동일한 노래 시트에서 노래를 부르도록 항상 "정리"하는 것이 좋습니다.
제임스 앤더슨

2
@JamesAnderson One은 이것이 버그가 많은 Makefile의 인스턴스라고 주장 할 수 있습니다.
Kristof Provost

4
@KristofProvost : "New ABI"(새 컴파일러 버전을 도입했을 가능성이 있음)를 'buggy Makefile'로 분류하지는 않습니다. 'make'가 바라는 범위를 벗어났습니다.
Vatine

1
물론, 컴파일러를 메이크 파일에 전제 조건으로 추가하는 것도 가능합니다 (전혀 어려운 것도 아닙니다). 문제를 잡기에 충분합니다. 대체로 큰 문제는 아니며 어쨌든 매우 드 rare니다. 컴파일러 플래그 등을 고려한 makefile을 사용하고 작성했기 때문에 요점을 지적했습니다. 또한 makefile에서는 흔하지 않지만 컴파일러를 확인하는 것보다 훨씬 유용합니다. 훌륭하고 잘 작성된 메이크 파일에 대한 나의 기대는 상당히 높습니다. 평균 makefile에 대한 나의 기대 는 다소 낮습니다 ...
Kristof Provost

8

나는 Michael Kohne의 답변에 일반적으로 동의합니다. "make clean"이 실제로 무엇을하는지 알기 위해 설치 문서를 읽어야합니다. "realclean 만들기"및 "distclean 만들기"와 같이 사용해야 할 여러 수준의 정리가있을 수 있습니다. 이것에 대한 비공식적 인 협약이 있지만 돌에는 새겨진 것이 없습니다.


2
+1 : ""정리 "가 실제로 무엇을하는지 알기 위해 설치 문서를 읽어야합니다. "일반 규칙"이 없습니다. 실제로 문서를 읽어야합니다.
S.Lott

5

이 프로젝트는 귀하의 프로젝트이므로 귀하의 프로젝트임을 이해합니다 makefile. 내 목표는 가능한 한 make 항상 올바른 빌드를 생성하는 것입니다. 경우 make clean, 어떤 조건에서 복구 할 필요가 다음 내 의견으로는 makefile잘못하고 수정해야합니다. 종속성이 올바르게 계산 된 경우 간단하게 make다시 컴파일해야하는 모든 항목을 다시 컴파일해야합니다.


2
나는 동의한다. 요즘에는 거의 무한한 디스크 공간이 문제가되지 않지만, 링크 된 실행 파일이 생성 된 후 디스크 공간을 절약하기 위해 정리 및 실제 정리를 사용했을 때를 기억할만큼 나이가 들었습니다. GCC, 아파치, 펄 등을 만들면 많은 것들이 남게됩니다.
Bill Ruppert

1

나는 야간 빌드 전에 "make clean"을 실행할 것이다. 이 경우 전체 빌드를 수행하는 데 걸리는 추가 시간은 그다지 중요하지 않지만 모든 것이 올바른 버전인지 확인하면 얻을 수있는 추가 안전이 가치가있을 것입니다.


프로젝트 크기에 따라 다릅니다. 증분 빌드 작업에 사용하는 경우 다른 사이트의 변경 사항을 밤새 가져 와서 2-4 시간이 소요됩니다. 깨끗한 빌드에는 7-9 시간이 걸릴 수 있습니다. 게다가 우리는 때때로 2 개 또는 3 개의 가지를 만들고 싶었습니다. 고속 머신에서도 매우 큰 코드베이스는 작은 코드베이스와 상당히 다르게 처리해야합니다.
TafT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.