2010-12-25 4 views
0

나는 메이크 파일을 사용하여 구축과 같은 여러 명령 줄 인수를 받아들입니다 C에서 큰 프로젝트를 만들 DSP = 1 DEBUG = 1 LX = 1 등 등메이크 여러 실행은

내가 필요로 내 실험을 완료하려면 다른 인수를 전달하여이 프로그램을 빌드하십시오. 이 여러 개의 실행 문을 모두 쓸 수있는 파일을 만들 수 있습니까?

나는 이것을 할 수있는 방법이 있어야한다는 것을 알고 있지만 나는 리눅스에 익숙하지 않으므로 알아 낸다. 각각의 make를 개별적으로 실행하면 너무 바쁠 것입니다.

답변

1

모든 명령을 한 줄에 하나씩 텍스트 파일을 작성하거나 자동으로 생성하십시오. 그럼 그냥 일반 유닉스 방법은 처음에 #!/bin/bash에 행을 추가하고 파일을 실행하기 위해 chmod +x을하고 있지만, 단지 호출 bash는 쉽게하고 있습니다 것

bash <filename> 

입력 순서에있는 모든 명령을 실행하기 창에서 동일한 파일을 사용합니다 ("something.bat"파일의 이름을 지정하는 것).

0

기본 대답은 @6502입니다.

재실행시 모든 것을 다시 작성하는 방법을 알아야합니다. GNU Make에서는 -B (또는 --always-make) 옵션을 사용할 수 있습니다. GNU Make를 사용하고 있지 않다면 정리 (make clean)를 실행하여 빌드 된 파일을 제거 할 수 있습니다. clean 타겟이 아직없는 경우 추가해야합니다.

1

쉘 스크립트를 사용하지 마십시오. make에서 수행하십시오. 이렇게하면 make의 이점을 얻을 수 있습니다 : 깨진 컴파일에 대한 감지; 병렬 동작; 등을 한 곳에서 모든 물건,

당신이 제대로 메이크 파일을 작성한 경우
.PHONY: all 
all: 
    ${MAKE} bigcompile DSP=1 DEBUG=1 LX=1 
    ${MAKE} bigcompile DSP=0 DEBUG=1 LX=1 
    ${MAKE} bigcompile DSP=1 DEBUG=0 LX=1 
    ${MAKE} bigcompile DSP=0 DEBUG=0 LX=1 
    ∶ 

bigcompile: 
    ∶ 

, 동시에 여러 bigcompile의 모든 을 실행할 수 있어야한다. 이 경우 당신은 그것을 실행할 수 있는지 확인 말할 필요 이상의 한 번에 bigcompile :

.PHONY: all 
all: compile1 compile2 compile3 compile4 ; @echo [email protected] success 

.PHONY: compile1 compile2 compile3 compile4 
compile1: ; ${MAKE} bigcompile DSP=1 DEBUG=1 LX=1 
compile2: ; ${MAKE} bigcompile DSP=0 DEBUG=1 LX=1 
compile3: ; ${MAKE} bigcompile DSP=1 DEBUG=0 LX=1 
compile4: ; ${MAKE} bigcompile DSP=0 DEBUG=0 LX=1 
∶ 

(.이 상용구를 축소 명확한 기회가있다)