Makefile linux驱动程序编译错误,无法使用$(shell pwd)/xxx作为包含路径

Makefile linux驱动程序编译错误,无法使用$(shell pwd)/xxx作为包含路径,makefile,compilation,linux-device-driver,Makefile,Compilation,Linux Device Driver,编译linux驱动器时,我发现一个问题: 我有一些方法来定义include路径 由$(shell pwd)创建的相对路径,但不起作用: MOD_INC=$(shell pwd)/include EXTRA_CFLAGS+=-I$(MOD_INC) 我发现:$(shell pwd)==/home/myname/prj_svn B一个结果路径,它工作: MOD_INC=/home/myname/prj_svn/include EXTRA_CFLAGS+=-I$(MOD_INC) PRJ_PATH

编译linux驱动器时,我发现一个问题:

我有一些方法来定义include路径

由$(shell pwd)创建的相对路径,但不起作用:

MOD_INC=$(shell pwd)/include
EXTRA_CFLAGS+=-I$(MOD_INC)
我发现:$(shell pwd)==/home/myname/prj_svn

B一个结果路径,它工作:

MOD_INC=/home/myname/prj_svn/include
EXTRA_CFLAGS+=-I$(MOD_INC)
PRJ_PATH=/home/myname/prj_svn
MOD_INC=$(PRJ_PATH)/include
EXTRA_CFLAGS+=-I$(MOD_INC)
C定义一个路径,它可以工作:

MOD_INC=/home/myname/prj_svn/include
EXTRA_CFLAGS+=-I$(MOD_INC)
PRJ_PATH=/home/myname/prj_svn
MOD_INC=$(PRJ_PATH)/include
EXTRA_CFLAGS+=-I$(MOD_INC)
我不知道为什么

我在一个应用项目中尝试了它们,它们都可以工作


谢谢你的帮助

Make在构建时会进行大量目录更改;我不想在任何特定时间点依赖
pwd
的值


如何定义一个名为
MODULE\u HOME
的环境变量,设置为
/HOME/myname/prj\u svn
,并写入与之相关的所有路径?

那么,运行Make时,当前工作目录是什么?当前目录是:/HOME/myname/prj\u svn什么意思,“它不工作”?它有什么作用?“它不工作”意味着编译模块时无法找到包含路径中的头文件。EXTRA_CFLAGS就像cflagsb一样,但是如果有人签出我的代码,他必须将define更改为compile。您可以从驱动makefile的shell脚本设置它。类似于此,但更复杂的是autoconf,它有
top\u builddir
可以在这里使用。是的,我认为这是解决这个问题的好方法,谢谢。