如何获取当前的Makefile的相对目录?

我有一个几个Makefile在应用程序特定目录像这样:

/project1/apps/app_typeA/Makefile
/project1/apps/app_typeB/Makefile
/project1/apps/app_typeC/Makefile

每个Makefile在此路径中包括一个.inc文件一层:

/project1/apps/app_rules.inc

里面的app_rules.inc我设置的目的地,我想要的二进制文件,在构建时放置。我想要所有二进制文件在它们各自的app_type路径:

/project1/bin/app_typeA/

我试着使用$(CURDIR),像这样:

OUTPUT_PATH = /project1/bin/$(CURDIR)

但是我得到的二进制文件埋在整个路径名如下:(注意冗余)

/project1/bin/projects/users/bob/project1/apps/app_typeA

我可以做什么来获得执行的“当前目录”,以便我可以知道只是app_typeX为了把二进制文件在各自的类型文件夹?

shell函数。

你可以使用shell函数:current_dir = $(shell pwd)。
或者与notdir组合使用,如果不需要绝对路径:
current_dir = $(notdir $(shell pwd))。

更新。

给定解决方案仅在从Makefile的当前目录运行make时有效。
正如@Flimm注意到:

Note that this returns the current working directory, not the parent directory of the Makefile.
For example, if you run cd /; make -f /home/username/project/Makefile, the current_dir variable will be /, not /home/username/project/.

下面的代码将适用于从任何目录调用的任何Makefile:

mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
http://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何获取当前的Makefile的相对目录?