makefile进阶问题 --> 在模式规则中指定目标路径.(100分只送第一个解答正确者) --本帖是追加分数的. 请各位不吝赐教.

loverlv 2008-05-16 03:26:39
我的开发平台: 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 $ <

注: 分数只给第一个解答正确者.
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
norsd 2008-11-08
  • 打赏
  • 举报
回复
Using /Fo
Specifies an object (.obj) file name or directory to be used instead of the default.
/Fopathname

The following command line creates an object file named THIS.obj in an existing directory, \OBJECT, on drive B.
CL /FoB:\OBJECT\ THIS.C


xhs_lh04 2008-10-14
  • 打赏
  • 举报
回复
vpath=../debug:.

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧