내가 플렉스 사용하여 내 어휘 분석기를위한 메이크업 파일을 만들고 싶어, 나는 파일을 여러 템플릿을 시도했지만 그렇게 코드를 컴파일 할 날이 선을 여기에 하나를 구축입니다 도와주세요 작동하지 않았다 :어휘 분석기 용 makefile을 만드는 방법은 무엇입니까?
lex -t lexical.l > lexical.c
cc -c -o lexical.o lexical.c
cc -o lexy lexical.o -ll
을
내가 플렉스 사용하여 내 어휘 분석기를위한 메이크업 파일을 만들고 싶어, 나는 파일을 여러 템플릿을 시도했지만 그렇게 코드를 컴파일 할 날이 선을 여기에 하나를 구축입니다 도와주세요 작동하지 않았다 :어휘 분석기 용 makefile을 만드는 방법은 무엇입니까?
lex -t lexical.l > lexical.c
cc -c -o lexical.o lexical.c
cc -o lexy lexical.o -ll
을
출발점
LEX = lex
.l.c:
$(LEX) -t $< >[email protected]
.c.o:
$(CC) -o [email protected] -c $<
lexy: lexical.o
$(CC) -o [email protected] $^ -ll
이 등등 clean
규칙, 의존성 추적 및 확장 할 필요가있을 것입니다,하지만 난 당신이 생각하는 방법을 메이크 작업을 얻을 수 있어야한다고 생각합니다.
위의 대답과의 차이점은 무엇입니까 – flashdisk
GNU make를 사용하는 경우 makefile을 전혀 필요로하지 않습니다. 기본 규칙은 사용 사례를 다룹니다.
기본 규칙을 인쇄하고 make가 '% .l'을 '% .c'로 변환하는 방법을 알고 있는지 확인하겠습니다.
$ make -p | grep -A6 '\.l\.c'
make: *** No targets specified and no makefile found. Stop.
.l.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# recipe to execute (built-in):
@$(RM) [email protected]
$(LEX.l) $< > [email protected]
있습니다. 비슷한 방법으로 GNU make가 '% .o'를 '% .c'에서 빌드하고 '%'를 '% .o'에서 빌드하는 방법을 알고 있는지 확인할 수 있습니다.
현재 디렉토리에 lexical.l
이 있고 메이크 파일이 없다고 가정하면 빌드를 만드는 방법을 알 수 있습니다. lexical
.
$ make -n lexical
rm -f lexical.c
lex -t lexical.l > lexical.c
cc -c -o lexical.o lexical.c
cc lexical.o -o lexical
rm lexical.c lexical.o
위대한. 우리가 놓칠 수없는 것은 귀하가 요청한 연결을위한 -ll
플래그입니다. LDLIBS
에 추가해 보겠습니다.
$ make -n lexical LDLIBS=-ll
rm -f lexical.c
lex -t lexical.l > lexical.c
cc -c -o lexical.o lexical.c
cc lexical.o -ll -o lexical
rm lexical.c lexical.o
Voilà! 결과적으로 makefile은 다음과 같이 짧을 수 있습니다.
LDLIBS=-ll
all: lexical
GNU make가 이미 필요한 규칙을 정의했습니다. 그냥 Makefile
LDLIBS = -ll
lexy: lexical.o
lexical.o: lexical.l
라는 이름의 파일이 넣어
은 $
make를 실행하면됩니다.
어떤 오류가 있습니까? – iabdalkader