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

问题描述 投票:0回答:2

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

无需指定每个文件来重定向输出并拥有大量 NMAKE 目标,是否有一种简单的方法可以通过 CL 来完成此操作?

visual-studio winapi visual-c++ command-line
2个回答
17
投票

事实证明

/Fo
选项确实有效,但您指定的目录必须以反斜杠结尾。 这样

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

可以工作,但

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


2
投票

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

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

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

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

说到

NMAKE
,在
NMAKE
上传递带引号的宏值时需要类似的语法 命令行。结尾的反斜杠似乎是需要注意的关键部分。

nmake SOMEDIR="quoted path\obj"\

nmake SOMEDIR="quoted path\obj\\"

nmake "SOMEDIR=quoted path\obj"

nmake SOMEDIR="quoted path\obj\"

因为这会导致转义引号

\"
并会抓取命令行上后面的任何内容并将其放入
$(SOMEDIR)
中。我花了一段时间来诊断这种行为,希望这能为其他人节省时间。

© www.soinside.com 2019 - 2024. All rights reserved.