Makefile 使用gnu make with-C选项时,如何找到原始调用目录?

Makefile 使用gnu make with-C选项时,如何找到原始调用目录?,makefile,gnu-make,Makefile,Gnu Make,当用户使用'-C'命令行选项时,是否可以确定调用make的用户所处的目录 更新: 再解释一下。我知道理论上我不需要它。然而,在我的例子中,makefile的用户希望能够控制二进制文件的最终位置,所以我允许他们给我他们想要的路径。所以他们可以做一些类似的事情: make OUTPUT_PATH=/home/user/build/ 但是,当他们从要用于输出的目录调用make时,这种情况就会发生 cd /home/user/build make -C /home/user/source OUTPUT

当用户使用'-C'命令行选项时,是否可以确定调用make的用户所处的目录

更新: 再解释一下。我知道理论上我不需要它。然而,在我的例子中,makefile的用户希望能够控制二进制文件的最终位置,所以我允许他们给我他们想要的路径。所以他们可以做一些类似的事情:

make OUTPUT_PATH=/home/user/build/
但是,当他们从要用于输出的目录调用make时,这种情况就会发生

cd /home/user/build
make -C /home/user/source OUTPUT_PATH=.
希望这能让事情变得更清楚一点。我倾向于说这是不可能的,但我想询问整个社区


谢谢

GNU make本身不提供这种能力。但是,许多shell将设置
PWD
环境变量,由于GNU make将所有环境变量作为make宏导入,因此您可以通过以下方式找到答案:

$ pwd
/home/madscientist

$ echo 'all: ; @echo $(PWD) $(CURDIR)' | make -f-
/home/madscientist /home/madscientist

$ echo 'all: ; @echo $(PWD) $(CURDIR)' | make -f- -C /tmp
/home/madscientist /tmp
请注意,这取决于外壳的行为!不同用户的shell可能表现不同