编译器(CL.EXE)可以获取多个源文件,但喜欢生成调用它的目录中的所有OBJ文件。我找不到编译器标志来设置输出目录,但我找到了一个用于单个OBJ,但它不能采用多个源。
无需指定每个文件来重定向输出并为NMAKE设置大量目标,是否可以通过CL轻松实现?
答案 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)
中。花了我一段时间来诊断这种行为,希望这可以节省其他人的时间。