Visual studio visualc&x2B+;命令行编译器(CL.EXE)重定向OBJ文件

Visual studio visualc&x2B+;命令行编译器(CL.EXE)重定向OBJ文件,visual-studio,visual-c++,compiler-construction,command-line,winapi,Visual Studio,Visual C++,Compiler Construction,Command Line,Winapi,编译器(CL.EXE)可以获取多个源文件,但喜欢在调用它的目录中生成所有OBJ文件。我找不到设置输出目录的编译器标志,但我确实为单个OBJ找到了一个,但它不能接受多个源 不必指定每个文件来重定向输出,也不必为NMAKE指定很多目标,有没有一种简单的方法可以通过CL来实现呢?事实证明,/Fo选项确实有效,但您指定的目录必须以反斜杠结尾。因此 cl /Fo.\obj\ -c foo.c fee.c 可以工作,但是cl/Fo。\obj-c…将失败。只需添加到唯一的答案。如果引用obj路径,则必须

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


不必指定每个文件来重定向输出,也不必为NMAKE指定很多目标,有没有一种简单的方法可以通过CL来实现呢?

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

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

可以工作,但是cl/Fo。\obj-c…将失败。

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

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

说到
NMAKE
,在
NMAKE
命令行。尾随的反斜杠似乎是需要注意的关键点

nmake SOMEDIR="quoted path\obj"\

不是


因为这将导致一个转义引号
\”
,并将获取命令行上后面的任何内容并将其放入
$(SOMEDIR)
。我花了一些时间来诊断这种行为,希望这能为其他人节省时间。

使用了/Fo选项来完成此操作。使用IDE的C/C++,命令行页面来查看它的功能。我想我已经尝试过了。MSDN让它看起来只能在一个源文件上使用。你能提供一个示例吗?你真的不需要me发布一个项目的命令行设置页面截图,是吗?你肯定可以创建自己的IDE项目吗?我没有安装IDE,只有Windows SDK。你不能复制并粘贴IDE生成的命令行吗?使用快速版,它是免费的。我发现它实际上必须以两个反斜杠结束。引用path似乎将其更改为绝对路径,因此有必要将相对路径添加到前面的
`中。此外,出于某种原因,
cl`似乎不想创建目录结构本身:
nmake SOMEDIR="quoted path\obj"\
nmake SOMEDIR="quoted path\obj\\"
nmake "SOMEDIR=quoted path\obj"
nmake SOMEDIR="quoted path\obj\"