Visual C ++命令行编译器(CL.EXE)重定向OBJ文件

时间:2011-10-09 20:54:33

标签: visual-studio visual-c++ compiler-construction command-line winapi

编译器(CL.EXE)可以获取多个源文件,但喜欢生成调用它的目录中的所有OBJ文件。我找不到编译器标志来设置输出目录,但我找到了一个用于单个OBJ,但它不能采用多个源。

无需指定每个文件来重定向输出并为NMAKE设置大量目标,是否可以通过CL轻松实现?

2 个答案:

答案 0 :(得分:11)

事实证明/Fo选项实际上有效,但您指定的目录必须以反斜杠结尾。因此

cl  /Fo.\obj\  -c foo.c fee.c

工作但cl /Fo.\obj -c ...会失败。

答案 1 :(得分:0)

只需添加到唯一答案即可。如果引用obj路径,则必须在路径结束引号之后添加尾随反斜杠,或者如果在引号之前将其尾部反斜杠转义。

cl  /Fo"quoted path\obj"\  -c foo.c fee.c

OR

cl  "/Foquoted path\obj"\  -c foo.c fee.c

OR

cl  /Fo"quoted path\obj\\"  -c foo.c fee.c

说到NMAKE,在NMAKE上传递引用的宏值时,预期语法相似 命令行。后面的反斜杠似乎是要注意的关键部分。

nmake SOMEDIR="quoted path\obj"\

OR

nmake SOMEDIR="quoted path\obj\\"

OR

nmake "SOMEDIR=quoted path\obj"

nmake SOMEDIR="quoted path\obj\"

,因为这将导致转义的引号\",并且将抢占命令行中后面的所有内容并将其放入$(SOMEDIR)中。花了我一段时间来诊断这种行为,希望这可以节省其他人的时间。