Я только недавно начал разрабатывать под Linux и Android и захотел сделать Makefile для удобной сборки всех компонентов, а их на данный момент три, есть два проекта под андроид, собираются ndk-build и один проект собирается через make и собирает программку.
Я попробовал сделать makefile, но столкнулся с проблемой, что запустив makefile из родительской директории, то выполняя cd вхожу в папку, но выполняя ndk-build выполнение идет все равно из родительской директории и не находит необходимых файлов. И то же самое с обычным linux проектом. Как сделать, что бы команды выполнялись из той директории, куда я перешел скриптом сборки?
Либо в обработке мишени все выполнять "одной командой", либо написать еще несколько Makefile и разложить по каталогам. Крупные проекты обычно используют второй путь.
Я понимаю о чем вы говорите, я начал писать основной Makefile и у меня есть Makrefile для одной из программ. Главный делает так
storage:
cd ./Utility/Storage/
make clean
make all
cd ../..
но получается что то такое
make storage
cd ./Utility/Storage/
make clean
make[1]: вход в каталог «/home/drem1lin/Projects/Android»
cd ./SimpleApp/
ndk-build clean
то есть перейдя в папку он видя make clean возвращается к главному проекту. а как сделать так что бы не возвращался? мне кажется я не понимаю какую то мелочь...
Павел Каптур: Потому что он с каждым действием возвращается в свой каталог, из которого запущен. Я недаром привел пример - как нужно делать В мишени делается все "в одно действие" - через &&. То есть cd куда-надо && действие 1 && действие 2 && ... И все это берется в скобки, чтобы make выполняло все в одном субшелле, а не разрывало задачи
CityCat4: вы писали: либо написать еще несколько Makefile и разложить по каталогам. Я так понимаю этот метод более правильный и меня интересует именно он, как производить вызов нескольких Makefile-ов из одного общего. Я пытался сделать именно это