【问题标题】:Setting output path for cl.exe设置 cl.exe 的输出路径
【发布时间】:2012-05-01 03:48:52
【问题描述】:

我用的是命令行参数Fo,命令行是这样的:

file1.c  /ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /errorReport:queue /bigobj /FdDebug\vc100.pdb /FoDebug\ /FaDebug\

但仍有一些文件在 Debug 文件夹之外生成(exe、ilk、pdb)
我做错了什么?

【问题讨论】:

    标签: c++ c visual-c++


    【解决方案1】:

    这些是由链接器生成的文件。您需要单独运行它或使用 /link 编译器选项,以便控制其输出。使用 /OUT 选项设置 .exe 和 .ilk 位置,使用 /PDB 选项设置 .pdb 位置。

    【讨论】:

    • 我没有看到/c,所以链接器作为cl.exe的子进程生成。
    • cl.exe 会将/link 之后的任何命令行选项传递给链接器,无需单独运行。
    • 不,不是 /Fd,这是一个编译器选项,只设置程序数据库的位置。稍后由链接器使用,以生成调试器使用的 PDB 文件。
    【解决方案2】:

    因为(如DCoder saidcl.exe/link 之后的任何命令行选项传递给链接器,所以可以一行完成:

    cl.exe <all your cl arguments here> /link user32.lib <and other lib here> /libpath:"C:\Program Files\Microsoft SDKs\windows\v7.0A\Lib\" /out:files\newfilename.exe
    

    您可以将files\newfilename.exe 更改为您想要的任何内容。如果您从批处理文件运行,您可以执行files\%1.exe 等操作...

    【讨论】:

      【解决方案3】:

      嗯,我一直在寻找同样的东西,我在cl documentation 中找到了所有内容。但是这个页面是我搜索时谷歌的第一个页面,所以我把参考放在这里

      • /FA, /Fa(列表文件)
      • 指定路径名
      • /Fd(命名 PDB 文件)
      • /Fe(命名 EXE 文件)
      • /FI(名称强制包含文件)
      • /Fm(名称映射文件)
      • /Fo(名称对象文件)
      • /Fp(名称 .pch 文件)
      • /FR、/Fr(创建 .sbr 文件)
      • /FU(名称强制#使用文件)
      • /Fx(合并注入代码)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        相关资源
        最近更新 更多