在Sublime Text 3中为Qt构建系统不起作用

时间:2013-09-21 15:57:53

标签: qt sublimetext3

我有以下构建系统文件无效。

{
"cmd" : ["qmake", "-project"],
"cmd" : ["qmake"],
"cmd" : ["make"],
"working_dir": "${project_path:${folder}}",
}

不会生成任何文件。通常应创建以下文件:

  • qmake -project生成.pro文件。
  • qmake生成makefile
  • make生成可执行文件

如何在构建文件中运行多个命令?

3 个答案:

答案 0 :(得分:3)

这是我在Sublime Text 3中使用的Qt 5项目的构建系统:

{
    "shell_cmd": "qmake && make",
    "working_dir": "${project_path:${folder}}",

    "variants":
    [
        {
            "name": "Qmake Project",
            "shell_cmd": "qmake -project"
        },

        {
            "name": "Qmake Clean",
            "shell_cmd": "make clean"
        }
    ]
}

要扩展dutt的注释,您可以使用与在shell中编写命令时相同的语法在一行中运行多个命令。 &安培;&安培;很好,因为它只在前一个命令成功时执行下一个命令。

请参阅 Shell - Multiple commands in one line 有关单行shell命令的更多信息。

答案 1 :(得分:1)

您可以创建包含其中所有命令的bash文件,并将命令设置为该文件。

{
    "cmd" : ["my_build.sh"],
    "working_dir": "${project_path:${folder}}",
}

# my_build.sh
qmake -project
qmake
make

答案 2 :(得分:0)

对于寻找示例的其他人,我在这里创建了一个默认的“ qmake”构建系统(调试配置)和一个“ release”变体,该变体经过了额外的清理步骤,即移动一些文件然后压缩结果。

要使所有这些正常工作,您将需要设置某些路径和环境变量,幸运的是Qt附带了Windows批处理文件来执行此操作,Visual Studio 2017也是如此(或者您可以仅安装Visual Studio CLI开发人员没有IDE的工具)。

我启动一个cmd.exe(确保'subl'在哪里工作,如果不首先通过在PATH环境变量中放置Sublime可执行文件的路径来解决该问题),那么我将使用%QTDIR%\bin\qtenv2.bat来设置正确的qmake工具链。我为此使用msvc2017_64'toolkit',因此我的路径为C:\Qt\5.12.5\msvc2017_64\bin\qtenv2.bat

然后,如果您使用的是Microsoft的Visual C ++工具链(cl.exe,nmake等),则还需要运行批处理文件来为此设置正确的环境变量。我使用的是64位Qt工具包,因此需要“ vcvars64.bat”文件。它埋在Visual Studio文件夹中,而我的埋在"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\"中。在获取qt和ms .bat文件之后,我们准备从cmd.exe开始升华文本。使用subl myproject.sublime-project

说了这么多,这就是我的项目示例qmake构建系统:

{
"build_systems": [
    {
        "name": "qmake",
        "shell_cmd": "qmake ${project_path}/foo/foo.pro -spec win32-msvc \"CONFIG+=debug\" && C:/Qt/Tools/QtCreator/bin/jom -f Makefile.Debug && ${project_path}/foo/build/debug/foo.exe",
        "selector": "source.c++",
        "working_dir": "${project_path}/foo/build",

        "variants": [
        {
            "name": "release",
            "shell_cmd": "qmake ${project_path}/foo/foo.pro -spec win32-msvc \"CONFIG+=qtquickcompiler\" \"CONFIG+=release\" && C:/Qt/Tools/QtCreator/bin/jom qmake_all && C:/Qt/Tools/QtCreator/bin/jom install && C:/Qt/Tools/QtCreator/bin/jom clean && C:/Qt/5.12.5/msvc2017_64/bin/windeployqt ${project_path}/foo/build/release/foo.exe && \"C:/Program Files/7-zip/7z.exe\" a foo.zip ./release/*"
    }],
}