makefile进阶问题 --> 在模式规则中指定目标路径.(100分只送第一个解答正确者) --本帖是追加分数的. 请各位不吝赐教.
我的开发平台: eclipse + cl.exe + link.exe(微软VC6.0的C++编译器与连接器) ( I hate MFC ).
生成工具: GNU Make 3.81
目录结果如下:
bims
+- src
+- debug
目前, 我的源码文件均在src目录下. 我想用make的模式规则将cl.exe编译器生成.obj文件输出到 debug目录下.
由于链接器所用的obj文件如果不在当前目录下, 则必须指定obj文件的所在目录. 这就导致了make会自动须找带有路径的obj文件的生成规则.
因此, 我的问题是: 如何在模式规则中提供指定目标所在目录. 举个例子:
假设该项目就一个源码文件 bims.cpp, 那么它该makefile文件大致是如下的样子:
target=bims.exe
all:$(target)
target:..\debug\bims.obj
link ..\debug\bims.obj
..\debug\bims.obj:bims.cpp #问题在这里: 我如何写一个模式规则, 以完成该效果(即目标中包含了路径)呢?
cl /c bims.cpp
=======================
首先 %.obj:%.cpp; cl /c $ < 肯定是不可以的. 因为link中的依赖文件是: ..\debug\bims.obj, 而这里推理的出的目标文件只能是: bims.obj,
因此, make会提示没有生成 ..\debug\bims.obj的推理规则.
不知各位高人是否明白了我的问题. 我知道在nmake(微软的make工具)中, 如果我没记错, 模式规则应该是这样的:
{..\debug\)}.obj.cpp
cl /c $ <
注: 分数只给第一个解答正确者.