2017-12-26 46 views
2

다음 Makefile을 만들었고 제대로 작동합니다. "test_Makefile_my_libs"라는 이름의 실행 파일을 생성합니다.이 파일은 필자의 Fortran 코드 이름 인 접미사 ".f90"입니다.Makefile에서 내 자신의 실행 파일의 이름을 지정하는 방법은 무엇입니까?

FC = gfortran 

FCFLAGS = -g -fbounds-check 
FCFLAGS = -O2 

FCFLAGS += -I/usr/include 

LIBDIR = /homedir/myname/Libraries/ 
LIBS = $(LIBDIR)/libgfortran_f.a $(LIBDIR)/libmy.a 

PROGRAMS = test_Makefile_my_libs 

all: $(PROGRAMS) 

%: %.o 
     $(FC) $(FCFLAGS) -o [email protected] $^ $(LIBS) 

%.o: %.f90 
     $(FC) $(FCFLAGS) -c $< 

.PHONY: clean veryclean 

clean: 
     rm -f *.o *.mod *.MOD 

veryclean: clean 
     rm -f *~ $(PROGRAMS) 

그러나 "myjob.exe"와 같은 소스 코드 이름과는 별도로 실행 가능한 이름이 필요합니다. 소스 코드 이름을 수정하지 않고 Makefile에서 적절한 변경을 어떻게해야합니까? (나는 여러 가지 방법을 시도하고, 아무도 일을하지 않습니다.)

+0

내가 강하게 ** [GNU 만들기] (HTTPS의 문서를 읽기 위해 몇 시간을 복용하는 것이 좋습니다을 : // www.gnu.org/software/make/manual/html_node/index.html)**. 이것은 당신에게 (그리고 오늘뿐만 아니라) 유용 할 것입니다. 또한 make -p를 사용하여 내장 규칙을 이해하고 활용하십시오. –

+0

'PROGRAMS = test_Makefile_my_libs'를'PROGRAMS = myjob.exe'로 변경하면 도움이되지 않을까요 ?? –

답변

0

이 규칙 추가

myjob.exe: test_Makefile_my_libs.o 
    $(FC) $(FCFLAGS) -o [email protected] $^ $(LIBS) 
+0

'test_Makefile_my_libs' 대신'PROGRAMS'에 myjob.exe를 추가하여'all'의 목표가되도록 –

+0

많은 감사합니다! 이것은 마술처럼 작동합니다. 이전에 비슷한 것을 시도했지만 분명히 모든 세부 사항을 수정하지 못했습니다. – qquito

+0

@SteveBarnes : OP *가 기본 대상이되기를 원한다면 그렇게 할 수 있습니다. – Beta