2011-02-07 4 views
0

C++ 정적 라이브러리와이를 사용하는 실행 파일이 각각 별도의 폴더에 있습니다. 이러한 각각의 프로젝트는 디버그에 내장 또는 구성을 해제 할 수있는 파일의 계층 구조는 다음과 같은 경우 : Static_Lib1 \ 디버그 \의 staticlib1.a 다른 모든 정적 라이브러리에 대한
Static_Lib1 \ 릴리스 \ staticlib1.a
// 같은
실행 파일 \ 디버그 \ 실행 파일
실행 파일 \ 릴리스 \ 실행 파일메이크 파일 레이블 내 변수 업데이트

모든 디버그 및 릴리스 폴더에는 메이크 파일이 포함되어 있습니다.
디버그 또는 릴리스 - 선택한 구성을 사용하여 각 내부 프로젝트를 호출하기 위해 외부 메이크 파일을 작성하려고합니다.
그래서, 내가 좋아하는 뭔가를 시도 :

CFG= #empty declaration 
PROJECTS=Static_Lib1 Static_Lib2 ... Executable 
all: 
    release #default config is release 

release: 
    CFG = Release 
    make build-all 

debug: 
    CFG = Debug 
    make build-all 

build-all: 
    make clean 
    $(foreach projectName, $(PROJECTS), cd $(projectName)/$(CFG) && make all;) 

을하지만 시도 할 때이 출력은, 예를 들어, make debug을 실행할 수 :

CFG = Debug 
make: CFG: Command not found 
make: *** [debug] Error 127 

가 어떻게이 문제를 해결할 수 있습니까?
내 OS는 SLED 11x64입니다.

미리 감사드립니다.

답변

1

변경 그것은에 :

... 

release: 
    make CFG=Release build-all 

debug: 
    make CFG=Debug build-all 

... 
+0

대단히 감사합니다! –

+0

그게 무의미합니다. makefile을 불러내는 것뿐입니다. 릴리즈와 디버그 타겟을 제거하고'make CFG = WHATEVER build-all'을 직접 호출 할 수도 있습니다 –