이것은 Ubuntu Online, Fedora Online, Windows online emulator 또는 MAC OS online emulator와 같은 다양한 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공자에서 실행할 수 있는 makepp_builtin 명령입니다.
프로그램:
이름
makepp_builtin -- makepp에 내장된 규칙
기술
Makepp는 귀하가 지정하더라도 귀하의 프로그램을 컴파일하고 링크하는 방법을 알아낼 수 있습니다.
규칙이 전혀 없거나(또는 Makeppfile이 없는 경우). 모든 Makeppfile이
로드된 makepp는 또한 기본 규칙 세트를 로드합니다. (이러한 규칙은 다음과 같은 점에서 특별합니다.
Makeppfile의 다른 규칙을 무시하지 마십시오.) 기본 규칙 데이터베이스가 저장됩니다.
makepp 배포판 또는 라이브러리 디렉토리의 "makepp_builtin_rules.mk" 파일에서
항상 그걸 확인하면 기본 규칙이 정확히 무엇인지 확인할 수 있습니다.
Makepp의 내장 규칙은 GNU make의 규칙과 거의 동일하지만,
GNU가 만든 몇몇 희귀한 언어에 대한 규칙은 다음과 같습니다. (이것은 의도적인 것입니다.
여러 프로젝트에서 GNU make를 사용하면 실수로 일부를 재사용하는 문제가 자주 발생합니다.
GNU가 희귀한 언어에 지정한 접미사) 규칙은 동일한 것을 사용합니다.
GNU make와 같은 변수, 아마도 유용한 추가 기능이 있습니다. Makepp는 GNU보다 더 똑똑합니다.
어떤 컴파일러를 사용할 것인지, 어떤 다른 객체와 라이브러리를 연결할 것인지에 대한 추론에 대해 설명합니다.
인치
태만 변수 값
Makepp는 여러 변수에 대한 기본값을 제공합니다. 이 중 대부분은 일반적으로 다음과 같습니다.
규칙에서 사용되고 실제로 기본 규칙에서 사용됩니다. 해당 값은 재정의될 수 있습니다.
Makeppfile이나 명령줄에서 이러한 변수를 할당하여
이러한 변수는 makepp_variables의 "사전 정의된 변수"에 문서화되어 있습니다.
변수가 무엇으로 평가되는지에 대한 질문이 있으면 항상 다음과 같은 줄을 입력할 수 있습니다.
Makeppfile에 다음 줄을 추가하세요:
더미 := $(print $(CC))
&echo -- $(CC) # 이전 규칙보다 들여쓰기가 작아야 합니다.
이는 Makeppfile이 로드될 때 단순히 "$(CC)" 변수의 값을 인쇄합니다.
(덧붙여 이것은 당신이 확신하지 못하는 모든 표현식을 디버깅하는 유용한 방법입니다.
오른쪽.)
편집 규칙
단순화된 형태로 컴파일 규칙이 대략 다음과 같습니다.
표시된 변수의 값을 변경하면 컴파일 명령이 다음과 같이 변경됩니다.
예상.
#
# C 프로그램의 경우:
#
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(입력) -o $(출력)
#
# C++ 프로그램의 경우:
#
%.o: %.cxx # 그리고 %.cc, %.cpp, %.c++, 그리고 %.C
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(입력) -o $(출력)
#
# Fortran 프로그램의 경우:
#
%.의
$(FC) $(FFLAGS) -c $(입력) -o $(출력)
#
# Yacc 및 lex:
#
%.c: %.y
$(YACC) $(YFLAGS) $(입력)
&mv -f y.tab.c $(출력)
%.c: %.l
$(LEX) $(LFLAGS) -t $(입력) -o $(출력)
정확한 내용이 궁금하시다면 파일을 보시면 됩니다.
makepp_builtin_rules.mk makepp 배포판에서.
(링크) 규칙
Makepp는 또한 프로그램을 연결하는 방법도 알고 있습니다. Makepp는
링크 명령을 알아낼 때 표준 Unix make를 사용합니다. 시도하고 있다고 가정합니다.
대상 프로그램 "xyz"를 빌드합니다. Makepp는 "xyz.o"에서 이것을 빌드하려고 시도하고,
(표준 Unix make와 달리) 다른 객체나
도서관을 연결해야 합니다.
링크 규칙은 다음과 같습니다.
xyz: $(추론_객체 xyz.o, *.o)
$(infer_linker $(입력)) $(입력) $(LDFLAGS) $(LDLIBS) $(LIBS) -o $(출력)
"$(infer_objects)"는 다른 ".o" 파일이 무엇에 연결되어야 하는지 추론하려고 시도합니다.
어떤 ".h" 파일이 포함되어 있나요?
"추론된 링커"는 모든 소스가 "$(CC)"로 변환되는 특별한 마법입니다.
C 코드인 경우 "$(CXX)"이고 소스 중 하나가 C++인 경우 "$(F77)"입니다.
포트란.
선회 오프 전에, 내장 규칙
내장된 규칙이 마음에 들지 않으면 사용하지 마세요. 규칙이 마음에 들지 않으면
빌드가 너무 복잡해서 사용자 정의 Makeppfile이 필요할 수도 있습니다.
어쨌든.
내장된 규칙을 끄려면 Makeppfile에 다음과 같은 줄을 추가하면 됩니다.
makepp_no_builtin = 1
이를 사용하지만 상당히 비싼 내장 링커 규칙이 아닌 경우 이를 전환할 수 있습니다.
~와 함께 떠나다:
makepp_no_builtin_linker = 1
이전 버전과의 호환성을 위해 makepp는 이것을 포함하는 경우 기본 규칙도 끕니다.
Makeppfile 어딘가에 다음 줄을 추가하세요:
.접미사:
빌드 전체에서 모든 Makeppfile에 대한 내장 규칙을 해제하려면 다음을 지정하면 됩니다.
명령줄에 "--no-builtin-rules" 옵션을 추가합니다.
onworks.net 서비스를 사용하여 makepp_builtin을 온라인으로 사용하세요