2015-11-23 49 views
0

我有一个自动构建过程,用于在Windows上构建Qt应用程序。按照Qt的文档,为了获得XP兼容版本,它使用qmake的组合来生成Visual Studio项目,然后使用MSBuild来构建它。所以首先我使用qmake来创建VS项目:使用发布配置构建时无法获取MSBuild生成调试信息

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项目并更改发布的设置组态。这是不可接受的 - 我需要自动化!

有什么建议吗?

回答

0

不确定为什么在这里使用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目录。

P.S.说到XP的兼容性。它似乎是构建本身的需求(因为诸如qmake和jom以及编译器cl.exe之类的工具),并且在Windows XP上运行的构建产品并不取决于构建它的位置。

+0

我应该在我的原始问题中阐明这一点,然后我将进行编辑,但由qmake生成的makefile不会创建与XP兼容的版本。 Qt的文档说,要做到这一点,你必须创建一个Visual Studio项目并将平台工具包设置为v120_xp,因此需要使用MSBuild。 – GuyGizmo

+0

我不确定这一点。我们在Windows下有一个大项目,并且总是用qmake/jom构建。实际上,你正在与创建所有构建的人交谈。 Visual Studio是一个方便,并且qmake .pro文件是整个构建从什么开始。 – AlexanderVX

+0

如果这是真的,那么我会愉快地放弃Visual Studio的步骤,但正如qmake/jom将产生不适用于XP的构建。有没有我必须使用的设置来使XP兼容的版本? – GuyGizmo