2011-02-07 4 views
0

У меня есть статические библиотеки C++ и исполняемый файл, который их использует, каждый из которых находится в отдельной папке. Каждый такой проект может быть построен в Debug или Release конфигурации, когда иерархия файлов подобно следующему: Static_Lib1 \ Debug \ staticlib1.a
Static_Lib1 \ Release \ staticlib1.a
// то же самое для всех других статических библиотек
Executable \ Debug \ executable
Исполняемый \ Release \ executableОбновить переменные в метке makefile

Все папки для отладки и выпуска содержат файлы make-файлов.
Я пытаюсь написать внешний файл makefile для вызова каждого из внутренних проектов, используя выбранную конфигурацию - debug или release.
Итак, я пытался что-то вроде:

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 

Как я могу это исправить?
Моя ОС SLED 11x64.

Спасибо заранее!

ответ

1

Изменить это:

... 

release: 
    make CFG=Release build-all 

debug: 
    make CFG=Debug build-all 

... 
+0

Большое спасибо! –

+0

Thats бессмысленно. Все, что происходит, это вызвать make-файл. Вы также можете избавиться от целей выпуска и отладки и вызвать 'make CFG = WHATEVER build-all' напрямую –