【问题标题】:Can't get MSBuild to generate debug info when building using the release configuration使用发布配置构建时无法让 MSBuild 生成调试信息
【发布时间】:2015-11-23 23:42:17
【问题描述】:

我有一个用于在 Windows 上构建 Qt 应用程序的自动化构建过程。为了获得与 XP 兼容的构建,它使用 qmake 的组合来生成 Visual Studio 项目,然后使用 MSBuild 来构建它,按照 Qt 的文档。所以首先我使用qmake创建VS项目:

qmake -spec win32-msvc2013 -tp vc qt_project.pro

...然后我使用 msbuild 来构建它。 (注意:我安装了 Visual Studio 2013 社区。)我正在使用 msbuild,以便生成的可执行文件与 Windows XP 兼容。我还需要它来生成一个 pdb 文件并包含调试符号,所以我使用的具体命令是这样的:

msbuild /p:Configuration=Release /p:DebugType=pdbonly /p:DebugSymbols=true /p:PlatformToolset=v120_xp /m:3

它构建成功,并且确实构建了与 XP 兼容的可执行文件,但它确实生成调试信息,除非我将配置设置为调试。但我需要它使用 Release 配置来构建。基本上,它只是无缘无故地忽略“/p:DebugType=pdbonly /p:DebugSymbols=true”。

我刚刚花了很多时间试图解决这个问题,但到目前为止,我能得到我想要的唯一方法是手动打开 Visual Studio 项目并更改发布配置的设置.这是不可接受的——我需要自动化!

有什么建议吗?

【问题讨论】:

    标签: visual-studio qt visual-studio-2013 msbuild qmake


    【解决方案1】:

    不确定为什么在这里使用 MsBuild。 MsBuild 用于使用 Visual Studio 解决方案或项目文件进行命令行构建?当我们使用 Visual Studio 进行 Qt 调试/编程时,恕我直言,这些类型的项目文件只是一种方便。对于 Qt 应用程序项目构建目的来说,跳过所有中间步骤并直接从 Qt 自己的 .pro 项目文件中使用 qmake 然后 jom 开始构建可执行文件要容易/更好(Qt 自己的 make/nmake 替换,非常适合并行化构建):

    set config=release
    rem set config=debug
    
    rem provide any qmake options you need
    qmake myProject.pro -r "CONFIG+=%config%" -o MyMakefile
    if %errorlevel% neq 0 (
       echo qmake failed.
       goto :failure
    )
    
    rem make step now needs jom or nmake only
    jom /f MyMakefile
    
    if %errorlevel% neq 0 (
       echo Failed to compile!
       goto :failure
    )
    rem running installer maker, etc.
    :faliure
    

    确保提供相应 Qt bin 目录的系统路径。

    附:说到XP兼容性。这似乎是对构建本身的需求(因为 qmake 和 jom 以及编译器 cl.exe 之类的工具),而在 Windows XP 上运行的构建产品并不依赖于它的构建位置。

    【讨论】:

    • 我应该在我原来的问题中澄清这一点,我会进行编辑,但 qmake 生成的 makefile 不会创建与 XP 兼容的构建。 Qt 的文档说,要做到这一点,您必须创建一个 Visual Studio 项目并将平台工具包设置为 v120_xp,因此需要使用 MSBuild。
    • 我不确定。我们在 Windows 下有一个大项目,并且总是使用 qmake/jom 构建。实际上,您正在与创建所有构建的人交谈。 Visual Studio 很方便,qmake .pro 文件是整个构建的起点。
    • 如果这是真的,那么我会很高兴地放弃 Visual Studio 步骤,但是 qmake / jom 将生成不适用于 XP 的构建。是否有我必须使用的设置来制作与 XP 兼容的版本?
    • XP 兼容?我想这意味着能够在 XP 上运行构建。就是这样。
    • 恐怕我不关注
    猜你喜欢
    • 2012-02-19
    • 2010-12-10
    • 2011-10-23
    • 2015-07-22
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多