У меня есть структура каталогов следующим образом:Запуск Makefile, используя сценарий оболочки
. ├── one │ ├── one_one │ │ └── one_one_one │ │ ├── Makefile │ │ └── one_one_oneTest.cpp │ └── one_two │ ├── Makefile │ └── one_twoTest.cpp ├── three │ ├── Makefile │ └── threeTest.cpp └── two └── two_one ├── Makefile └── two_oneTest.cpp
Я хочу, чтобы запустить команду грим, где я когда-либо найти Makefile. Итак, я написал сценарий оболочки следующим образом.
#!/bin/bash
find . -type f -name Makefile -exec make \;
Но это дает ошибку говоря make: *** No targets specified and no makefile found. Stop.
Если я просто запустить find . -type f -name Makefile
, я получаю
./two/two_one/Makefile
./three/Makefile
./one/one_two/Makefile
./one/one_one/one_one_one/Makefile
который является правильным выходом я ожидал.
Если я запустил Makefile с помощью команды make, он работает правильно, поэтому я думаю, что Makefile верен. Что может быть неправильным в сценарии оболочки?
Просто для справки, один из моих Makefiles выглядит следующим образом:
all: TestTwoOne
TestTwoOne: two_oneTest.cpp
g++ two_oneTest.cpp -o TestTwoOne