2010-08-06 3 views
2

Makefile과 쉘 스크립트에 모두 포함될 수있는 형태로 빌드 변수 집합 (LDFLAGS에 추가해야하는)을 배포하고 싶습니다. .Makefile과 쉘 스크립트 모두에 사용할 변수 정의하기

내가 지금 가지고있는 것은 파일 buildflags.conf입니다 :

include buildflags.conf 
LDFLAGS+=$LDFLAGS_EXTRA 

또는 그들이 때, : 그들은 메이크 파일을 사용할 때

LDFLAGS_EXTRA="-static -foo -bar" 

내가, 내 사용자가 할 수 있도록하려면 쉘 스크립트를 사용하여 다음과 같이하십시오 :

. buildflags.conf 
gcc myapp.o -o myapp $LDFLAGS_EXTRA 

bash는 내 LDFLAGS_E XTRA 정의, make는 그 (것)들을 원하지 않는다.

누구나 해결책이있는 사람이 있습니까? 단일 정의 파일에서 시작하여 다른 컨텍스트에 포함시키기에 적합한 스크립트 세트가 좋을지라도 여러개의 별도 buildflags 파일을 유지 관리하고 싶지는 않습니다.

target: sources 
    . buildflags.conf ; \ 
    gcc -o [email protected] $^ $$LDFLAGS_EXTRA 

참고에 추가 $ :

답변

2

내가 가장 쉬운 해결책은 당신의 메이크업 레시피에서 변수 정의를 (당신의 조리법이 간단한 경우이 잘 작동)이 포함 된 쉘 스크립트를 만 포함하는 것입니다라고 말하고 싶지만 변수 사용과 실제로 두 행이 하나의 명령문이라는 사실은 ;\이 중요합니다.

+0

감사합니다, LDFLAGS_EXTRA_POST을 참조하십시오. 나는 대부분의 사용자가 makefile을 사용할 것이라고 생각한다. 그래서 나는 쉘 스크립트에 부담을 더 줄 것이다. 쉘 스크립트에 변수를 내보내는 방법이 있습니까? – Wim

+0

구성을 읽는 다른 쉘 스크립트를 사용하는 것이 허용됩니까? 그렇다면''awk -F = '{printf "% s = \"% s \ "\ n", $ 1, $ 2}' Ivo

+0

Perfect! 나는 그 동안 당신과 비슷한'awk' 명령을 사용하여 패키징 스크립트에 별도의 버전을 빌드함으로써 해결했습니다. – Wim

1
그의 주석에서 이보의 솔루션은 잘 작동하고 메이크 파일에 대한 더 많은 정규 또 다른 하나에 나를 가져왔다

:

1) 질문

2) 후 공정 사용에 대한 목록으로 LDFLAGS_EXTRA 정의 메이크

LDFLAGS_EXTRA_POST=$(subst ",,${LDFLAGS_EXTRA}) 

3) 만 메이크에 좋은 생각처럼 보이는