当前位置: 技术问答>linux和unix
请教一个makefile的写法和makedepend的问题
来源: 互联网 发布时间:2016-03-30
本文导语: 我的工程源代码和makefile文件是独立分开的目录树.结构大概如下: root/proj/linux_makefile: makefile工程存放的地方 root/src: 是源代码存放的地方.这里面还包含了一些子目录,比如 root/src/math/ root/sr...
我的工程源代码和makefile文件是独立分开的目录树.结构大概如下:
root/proj/linux_makefile: makefile工程存放的地方
root/src: 是源代码存放的地方.这里面还包含了一些子目录,比如
root/src/math/ root/src/test/ 等.
然后在makefile中,首先定义了关于源文件的变量,比如:
MATH_H = ../../src/math/matrix_3x3.h
......
MATH_C = ../../src/math/matrix_3x3.cpp
......
MATH_O = matrix_3x3.o #我希望生成的中间文件(目标文件等)存放早工程路径下面而不是代码树的路径下
但是这样写了后,通过makedepend产生依赖关系时发生了问题:
.PHONY: depend
depend:$(MATH_H) $(MATH_C)
makedepend -Y$(INCPATH) -I$(INCPATH) -fmakefile.dep $(MATH_C)
但是这样产生的makefile.dep文件是这样的:
../../src/math/matrix_3x3.o : ../../src/math/matrix_3x3.h
......
如果matrix_3x3.o前面带得有路径的前缀../../src/math/,在编译的时候就不能通过MATH_O来找目标文件了.除非我把MATH_O中的目标文件也加上前缀.那样目标文件就全部跑到源文件树下面去了.
我想问的是,怎么样在makedepend生成的依赖关系中,去掉目标文件的前缀?
谢谢!
root/proj/linux_makefile: makefile工程存放的地方
root/src: 是源代码存放的地方.这里面还包含了一些子目录,比如
root/src/math/ root/src/test/ 等.
然后在makefile中,首先定义了关于源文件的变量,比如:
MATH_H = ../../src/math/matrix_3x3.h
......
MATH_C = ../../src/math/matrix_3x3.cpp
......
MATH_O = matrix_3x3.o #我希望生成的中间文件(目标文件等)存放早工程路径下面而不是代码树的路径下
但是这样写了后,通过makedepend产生依赖关系时发生了问题:
.PHONY: depend
depend:$(MATH_H) $(MATH_C)
makedepend -Y$(INCPATH) -I$(INCPATH) -fmakefile.dep $(MATH_C)
但是这样产生的makefile.dep文件是这样的:
../../src/math/matrix_3x3.o : ../../src/math/matrix_3x3.h
......
如果matrix_3x3.o前面带得有路径的前缀../../src/math/,在编译的时候就不能通过MATH_O来找目标文件了.除非我把MATH_O中的目标文件也加上前缀.那样目标文件就全部跑到源文件树下面去了.
我想问的是,怎么样在makedepend生成的依赖关系中,去掉目标文件的前缀?
谢谢!
|
MATH_H = ../../src/math/matrix_3x3.h
......
MATH_C = ../../src/math/matrix_3x3.cpp
把前面的目录独立出来,
MATH_PATH=../../src/math
MATH_H=$(MATH_PATH)/matrix_3x3.h
注意产生MATH_O 的时候也必须指定路径
还有在解释依赖关系的时候,也要把路径关系包含进去
......
MATH_C = ../../src/math/matrix_3x3.cpp
把前面的目录独立出来,
MATH_PATH=../../src/math
MATH_H=$(MATH_PATH)/matrix_3x3.h
注意产生MATH_O 的时候也必须指定路径
还有在解释依赖关系的时候,也要把路径关系包含进去
|
cc做完了就把.o文件移动到指定目录下嘛
又不是不允许
|
学习中