C++ 从命令行生成Qt Creator项目

C++ 从命令行生成Qt Creator项目,c++,build-automation,qt-creator,C++,Build Automation,Qt Creator,我正在编写一个构建脚本来自动化构建和发布任务。我有一个Qt Creator项目,它有三种配置,其中两种配置我想从头开始完全重建,而不需要跳过任何预编译的头文件和现有的.o文件(release和release\u生产)。后者相同,只是定义了生产符号 我正在使用windows。如何从命令行构建这些配置 编辑:一些澄清:Qt Creator自定义构建步骤不存储在qmake makefile中,而是存储在Qt Creator特定的.pro.user XML文件中。我希望从命令行执行这些操作,而不在脚本中

我正在编写一个构建脚本来自动化构建和发布任务。我有一个Qt Creator项目,它有三种配置,其中两种配置我想从头开始完全重建,而不需要跳过任何预编译的头文件和现有的.o文件(release和release\u生产)。后者相同,只是定义了生产符号

我正在使用windows。如何从命令行构建这些配置


编辑:一些澄清:Qt Creator自定义构建步骤不存储在qmake makefile中,而是存储在Qt Creator特定的.pro.user XML文件中。我希望从命令行执行这些操作,而不在脚本中重复它们。

在QtCreator的“项目”选项卡中,您有确切的命令,QtCreator在build上运行,用于调试和发布。只需在可以构建项目的环境中运行这些行(Qt控制台)。但基本上,Qt项目是用
qmake.exe
构建的,然后是
nmake.exe
或Qt多线程make-like-executable
jom.exe

对于“生产”模式,您可以在qmake命令中使用
CONFIG+=production
参数,然后在.pro文件中使用:

CONFIG(production){
DEFINES+=PRODUCTION
}else{
}

这里涉及两个步骤:

  • 运行
    qmake
    生成makefile。通常的命令是

    c:\qt\4.7.2\bin\qmake.exe" path\to\some\project.pro -r -spec win32-g++ CONFIG+=...
    
    -spec
    开关很重要。确保提供了有效的makespec文件<代码>配置需要在此步骤中指定

  • 运行
    make
    进行编译和链接。这很容易

    C:\MinGW32\bin\mingw32-make -f Makefile.Debug
    
    记住将
    make
    指向正确的makefile


  • 为了使这项工作顺利进行,有一些实际的细节是必要的

    您必须知道编译器和资源处理器的位置。例:

    :: CL.EXE
    PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
    :: RC.EXE
    PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
    
    您必须定义包含和库路径:

    SET INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include
    SET LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64
    
    然后你可以这样做:

    CD C:\Foo\build-your-project-Desktop_Qt_5_13_0_MSVC2017_64bit-Release
    C:\Qt\Tools\QtCreator\bin\jom.exe /S -f Makefile.Release clean
    
    C:\Qt\5.13.0\msvc2017_64\bin\qmake.exe -o Makefile ..\your-project\your-project-file.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
    
    C:\Qt\Tools\QtCreator\bin\jom.exe /S /X Build.log -f Makefile.Release
    

    如果出现错误,请搜索头文件或lib文件所在的路径,并将其添加到路径中。不断重复,直到所有错误都消失。

    谢谢,我写了这样的东西,效果很好。但是,这并不完全是我想要的,请参见我编辑的问题。
    QtCreator--help
    不显示任何可以传递的参数,以直接生成所需的项目。。。对于QtCreator来说,这可能是一个好问题。我发现你的建议添加一个生产模式对于在不同的机器上编译非常有趣,而不是在我编程的机器上,在那里库等不在同一个位置。但我似乎不能让它工作。我试图修改“CONFIG(production)”块中的“INCLUDEPATH”和“DEFINES”,但当我尝试使用生成的Makefile(使用参数“CONFIG+=production”的“qmake”生成)进行编译时,“INCLUDEPATH”和“DEFINES”与我定义的不同。有什么想法吗?不管怎样,在完全删除构建文件夹并从头开始重建之后,问题就消失了。不确定您是否对使用第三方工具感兴趣,但我已经成功地使用了CMake。它允许目录外构建,因此我在不同的目录中构建不同的配置。你可以简单地设置你的脚本来删除“release”和“release\u production”目录,以确保它们是从头开始重建的。我很感激你的回答,但这不是我想要的。看看编辑:Qt Creator xml中定义的自定义构建步骤将不会以这种方式执行(虽然这是多年前的事了,Qt Creator现在可能不同了……已经有一段时间了!)抱歉,我这样做也是为了让其他可怜的schlubs搜索“从命令行构建Qt Creator项目”。