为什么这个 make 文件只调用一个目标?
Why does this make file only call one target?
我是新手,我正在尝试制作一个超级简单的构建脚本。这是我的:
.PHONY: all main
all:
mkdir -p build && cd build
main: main.o install
g++ -o main main.o
main.o: ../src/main.cpp
g++ -c ../src/main.cpp
.PHONY: install
install:
mkdir -p build
mv main.o build
.PHONY: clean
clean:
rm -r build/
我希望它调用 all
,然后调用 main
。实际上,情况是这样的:
$ make
mkdir -p build && cd build
只调用了all
,main
不是运行。为什么?在 .PHONY
行的 all
之后,我有 main
作为先决条件。还有帮助?
.PHONY
不是真正的目标(它是一个特殊的 make 构造),并且不会导致其先决条件为 运行。相反,提到的第一个实际目标是 all
,如果您只键入 make
,它将调用 all
作为默认目标。因为 all
不依赖于任何东西,所以它是唯一的目标 运行.
您可以在最顶部添加一行:
default: all main
这将导致 all
和 main
变为 运行(不要忘记将 default
添加到 .PHONY
。请注意,尽管您是不保证 all
会在 main 之前 运行。如果你想保证这一点,你还必须添加
main: all
这将迫使 all
在 main
之前变为 运行
我是新手,我正在尝试制作一个超级简单的构建脚本。这是我的:
.PHONY: all main
all:
mkdir -p build && cd build
main: main.o install
g++ -o main main.o
main.o: ../src/main.cpp
g++ -c ../src/main.cpp
.PHONY: install
install:
mkdir -p build
mv main.o build
.PHONY: clean
clean:
rm -r build/
我希望它调用 all
,然后调用 main
。实际上,情况是这样的:
$ make
mkdir -p build && cd build
只调用了all
,main
不是运行。为什么?在 .PHONY
行的 all
之后,我有 main
作为先决条件。还有帮助?
.PHONY
不是真正的目标(它是一个特殊的 make 构造),并且不会导致其先决条件为 运行。相反,提到的第一个实际目标是 all
,如果您只键入 make
,它将调用 all
作为默认目标。因为 all
不依赖于任何东西,所以它是唯一的目标 运行.
您可以在最顶部添加一行:
default: all main
这将导致 all
和 main
变为 运行(不要忘记将 default
添加到 .PHONY
。请注意,尽管您是不保证 all
会在 main 之前 运行。如果你想保证这一点,你还必须添加
main: all
这将迫使 all
在 main