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

时间:2014-02-11 00:52:20

标签: makefile gnu-make

是否可以确定用户在使用“-C”命令行选项时调用make的目录?

更新: 多一点解释。我在理论上知道我不应该需要它。但是在我的情况下,Makefile的用户希望能够控制二进制文件的最终位置,所以我允许他们给我他们想要的路径。所以他们可以这样做:

make OUTPUT_PATH=/home/user/build/

然而,当他们从他们想要用于输出的目录调用make时会崩溃。

cd /home/user/build
make -C /home/user/source OUTPUT_PATH=.

希望能让它更加清晰。我倾向于说这是不可能的,但我想查询整个社区。

谢谢!

1 个答案:

答案 0 :(得分:2)

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的行为!不同用户的shell可能表现不同。