makefile 中的循环 main

Circular main in makefile

当我 运行 使用我编写的 Makefile 进行“制作”时,它显示“Circular main <- main dependency dropped”。如何解决?

main: main main.cpp pair.cpp
    g++ -o main main.cpp pair.cpp
generate:
    g++ -shared -fPIC -o libpair.so pair.cpp
clean:
    rm main.exe
main: main main.cpp pair.cpp
    g++ -o main main.cpp pair.cpp

你的 makefile 中有太多 main,确保你知道第一个 main 是目标名称,第二个是由“其他东西”生成的可执行文件.

tar_main: main_exec main.cpp pair.cpp
    g++ -o main_exec main.cpp pair.cpp

假设我们将您的 makefile 修改为这样以识别两个主电源。这里,要生成目标 tar_main,make 需要 main.cpppair.cppmain_exec。但是我们还没有 main_exec,它只能由目标 tar_main...

生成

所以 tar_main 正在等待某人生成 main_exec 并提供给它,而 tar_main 只能由 tar_main 自己生成,在你的 makefile 中。那是一个dead-lock,而且可以检测到循环,make会拒绝运行这个。