gmake
빌드 프로세스를 위해 GNU 를 실행 하고 있습니다. 파일 확장자를 다음과 같이 사용합니다.
.pc: pro*c code (compiled by using oracle's proc compiler)
.cpp : c++ code (compiled by GNU g++ compiler)
.o: object file
.mc: c++ code (compiled by GNU g++ compiler)
.mo: object file
.pc
파일은 오라클에 의해 컴파일됩니다 proc
컴파일러 및 출력 확장 데 .cpp
또는은으로 컴파일됩니다 g++
생성하는 컴파일러 .o
파일을. 모든 .o
파일은 결국 함께 연결되어 실행 파일을 만듭니다.
다른 요구 사항의 경우 아래와 같이 .pc 파일 내에 특수 코드 블록이 있어야합니다.
#ifdef SPCL_BLCK
// some code
#endif // end of SPCL_BLCK
특별한 코드 부분이 있든 없든 실행 가능한 변형을 가지려면 다른 경로가 필요합니다. 특수 코드 부분이 없으면 경로는 다음과 같습니다.
.pc -> .cpp -> .o -> executable
특수 코드 부분을 사용하는 경우 경로는 다음과 같습니다.
.pc -> .mc -> .mo -> executable
내 PROC 플래그를 다음과 같이 정의했습니다.
PROCFLAGS := code=cpp 'include=(<<list of comma-separated include dirs>>)'
일반 규칙 (특수 코드가없는 경로) :
.pc.c:
proc $(PROCFLAGS) $<
%.o: %.c
g++ -c $(CCFLAGS) $<
어디에, CCFLAGS
일반적인 C ++ 컴파일러 플래그는
규칙 (특수 코드가있는 경로) :
%.mo: %.mc
$(CC) -c $(CCFLAGS) -DSPCL_BLCK -o $@ -x c++ $<
%.mc: %.pc
$(PROC) $(PROCFLAGS) define=SPCL_BLCK oname=$@ $<
모두 정상이지만 성공적인 빌드 후 .mc
파일이 삭제됩니다. rm
명령에 의해 수행되는 것을 알지만 .mc
파일 제거를 유도하는 암시 적 규칙이 있습니까? 암시 적 규칙 실행을 중지 할 수있는 명령을받을 수 있습니까?
다음을 정의해야합니다 gmakefile
.
.PRECIOUS:%.c %.mc
그렇지 않으면 GNU gmake
는 .mc 파일이 중간 파일이라고 생각하고 이러한 .mc
파일을 제거 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다