나는 책에 있는 Makefile을 사용하고 있습니다."고급 Linux 프로그래밍(2001)"[암호]. 이거 보니 이상하네요GNU가 만든다Makefile에서 컴파일러를 지정하지 않고도 코드가 올바르게 컴파일됩니다. 아무런 레시피 없이 굽는 것과 같아요!
다음은 코드의 최소 버전입니다.
test.c
int main(){}
파일 생성
all: test
그리고 실제로 변화를 만들어보세요! 실행하는 명령은 다음과 같습니다.
cc test.c -o test
문서에서 유용한 내용을 찾을 수 없습니다. 어떻게 이럴 수있어?
추신: 추가하자면, 언어가 test.c
사용 가능하기 때문에 지정되지도 않았습니다. GNU는 해당 언어 가 존재 하거나 (존재하지 않을 경우 ) 대신에 make
이를 사용합니다 .cc
test.cpp
test.cc
test.c
g++
c++
답변1
활용해보세요기본 제공 규칙. 특히 C 코드를 컴파일하는 방법과 단일 개체 프로그램을 연결하는 방법을 알려줍니다.
실제로 Makefile도 필요하지 않습니다.
make test
하나도 없이 작동합니다.
이를 가능하게 하는 숨겨진 규칙을 보려면 -p
Makefile 없이 옵션을 사용하십시오.
make -p -f /dev/null
이 -r
옵션은 이러한 기본 제공 규칙을 비활성화합니다.
지적한대로알레프제로, Make에는 오랫동안 (항상 그런 것은 아니지만) Stuart Feldman이 작성한 Unix V7의 첫 번째 버전에 대한 기본 규칙이 있었습니다.그들을 정의하다files.c
, 그리고그의 1979년 논문그들을 언급하십시오. 그들도 마찬가지야POSIX 사양. (이것은 Make의 모든 구현이 이를 지원한다는 의미는 아닙니다. 이전 Borland Make for DOS는 적어도 버전 3.0 이전에는 지원하지 않습니다.)