make的当前路径问题

时间:2022-10-16 21:46:11
使用cyg4me。
make目标如下:

target: dep1
        $(A)echo $(shell pwd)
        $(A)echo $(THIS_DIR)
        $(A)$(CPP) $(CPP_FLAGS) ...                  <-这句报错

这样执行会报错。

但是加上cd后就可以执行不报错。

target: dep1
        $(A)echo $(shell pwd)
        $(A)echo $(THIS_DIR)
        $(A)cd $(THIS_DIR);$(CPP) $(CPP_FLAGS) ...


但是$(A)echo $(shell pwd)和$(A)echo $(THIS_DIR)显示的内容始终是一样的。

这是为什么?

14 个解决方案

#1


报什么错?

$(A)是什么?

把$(A)从$(A)$(CPP) $(CPP_FLAGS) ...里去掉试试

#2


A=@ 
去掉也不行。
另外,如果把$(CPP) $(CPP_FLAGS) ...直接在命令行下输入是可以的。

#3


报什么错,把你的报错信息帖上来

#4


$(THIS_DIR)是什么?是不是一个路径名?
你在上边那两行内使用echo 的作业就是把它回显出来,这当然可以了。
但在第3行内,直接放这样一行路径是什么意思?应该是个命令 
@符号是抑制命令的回显,是属于make的标识符。你可以想想,在命令行内直接输入一个路径是什么现象出现。

#5


$(CPP)是什么?

#6


从他的makefile里看肯定是指示所使用的编译器喽,它后面例子能执行成功跟这个肯定没有关系.可能还是跟当前的makefile工作目录有关系.

引用 5 楼 cceczjxy 的回复:
$(CPP)是什么? 

#7


改变make当前目录有两种方式
sub_dir=./abc/def
target:
cd $(sub_dir)&&make



target:
make -C$(sub_dir)

#8


make -C

#9


$(shell pwd)显示当前路径。
$(THIS_DIR)是一个变量。
既然$(shell pwd)和$(THIS_DIR)内容一样当然THIS_DIR也是当前路径了。
既然当前路径就是$(THIS_DIR)那还要cd干嘛?

#10


make命令默认是在当前目录下搜索makefile/Makefile
你当前目录下有makefile?

#11


注意,所给内容均为被makefile包含的文件中的内容,且其它内容均可被顺利执行,就只有执行到这里出错了。

#12


mark

#13


请注意,以上内容均位于被makefile包含的文件中,且在出错之前其它部分编译执行均很顺利。

#14


$(CURDIR)

#1


报什么错?

$(A)是什么?

把$(A)从$(A)$(CPP) $(CPP_FLAGS) ...里去掉试试

#2


A=@ 
去掉也不行。
另外,如果把$(CPP) $(CPP_FLAGS) ...直接在命令行下输入是可以的。

#3


报什么错,把你的报错信息帖上来

#4


$(THIS_DIR)是什么?是不是一个路径名?
你在上边那两行内使用echo 的作业就是把它回显出来,这当然可以了。
但在第3行内,直接放这样一行路径是什么意思?应该是个命令 
@符号是抑制命令的回显,是属于make的标识符。你可以想想,在命令行内直接输入一个路径是什么现象出现。

#5


$(CPP)是什么?

#6


从他的makefile里看肯定是指示所使用的编译器喽,它后面例子能执行成功跟这个肯定没有关系.可能还是跟当前的makefile工作目录有关系.

引用 5 楼 cceczjxy 的回复:
$(CPP)是什么? 

#7


改变make当前目录有两种方式
sub_dir=./abc/def
target:
cd $(sub_dir)&&make



target:
make -C$(sub_dir)

#8


make -C

#9


$(shell pwd)显示当前路径。
$(THIS_DIR)是一个变量。
既然$(shell pwd)和$(THIS_DIR)内容一样当然THIS_DIR也是当前路径了。
既然当前路径就是$(THIS_DIR)那还要cd干嘛?

#10


make命令默认是在当前目录下搜索makefile/Makefile
你当前目录下有makefile?

#11


注意,所给内容均为被makefile包含的文件中的内容,且其它内容均可被顺利执行,就只有执行到这里出错了。

#12


mark

#13


请注意,以上内容均位于被makefile包含的文件中,且在出错之前其它部分编译执行均很顺利。

#14


$(CURDIR)