Я пытаюсь реорганизовать один проект makefile в иерархическую структуру. Проект импортируется в Eclipse как "внешний проект C/C++ с makefile".
Новая папка с отдельным файлом makefile содержит исходные файлы и make файл со следующим рецептом:
.PHONY: test
test:
echo "test"
Верхний каталог содержит файл make файла верхнего уровня со следующим рецептом:
clean:
@ echo ...cleaning
cd CppAudioPeriphs && make test
rm -f $(OBJECTS) $(NAME).lst $(NAME).elf $(NAME).bin $(NAME).s19 $(NAME).map $(NAME).dmp
Когда я звоню из Clean project
Eclipse Clean project
, последняя строка из последнего списка явно завершается правильно. Тем не менее, строка, запрашивающая переход в подкаталог и выполнение, выполняет make clean
с последующим сообщением:
make[1]: 'build/PeriphPhysical.o' is up to date.
Это первый объявленный объектный файл, и сообщение одинаковое, даже если test
рецепта не существует.
С другой стороны, из командной строки все работает. Id est open cmd.exe
, перейдите в папку проекта, введите make clean
→ выполняется команда "echo test".
Я использую gcc и binutils, скомпилированные для Windows, для кросс-компиляции для руки. Где могла быть моя проблема.
EDIT: ответ на jimmy
Это могут быть дополнительные подсказки.
1) Если я заменю
cd CppAudioPeriphs && "make test"
с
cd CppAudioPeriphs && C:\arm_tools\tools\bin\make.exe test
результат:
/usr/bin/sh: C:arm_toolstoolsbinmake.exe: command not found
Если я сменил косые черты на косые черты, старое сообщение '' build/PeriphPhysical.o 'обновлено.' снова возвращается.
Заменены
cd CppAudioPeriphs && C:\arm_tools\tools\bin\make.exe test
с
make -C CppAudioPeriphs test
как обходной путь, и теперь все компилируется.