运行 使用 shell 脚本的 makefile

Running a makefile using shell script

我的目录结构如下:

.
├── 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 的地方使用 make 命令。所以,我写了一个shell脚本如下

#!/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 是正确的。 shell 脚本有什么问题?

仅供参考,我的一个Makefile如下:

all: TestTwoOne

TestTwoOne: two_oneTest.cpp
    g++ two_oneTest.cpp -o TestTwoOne

您的 "current directory" 未更改为 运行 品牌的适当子目录。改为这样做:

find . -type f -name Makefile -execdir make \;