编译器(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
或
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)
中。我花了一段时间来诊断这种行为,希望这能为其他人节省时间。