2

我有以下无法正常工作的构建系统文件。

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

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

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

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

4

3 回答 3

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 命令的更多信息,请参阅 Shell - 一行中的多个命令。

于 2014-01-07T21:47:42.530 回答
1

您可以制作一个包含所有命令的 bash 文件,并将命令设置为该文件。

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

# my_build.sh
qmake -project
qmake
make
于 2013-09-21T20:00:24.310 回答
0

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

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

我启动一个 cmd.exe(确保 'subl' 工作,如果没有先通过将 Sublime 可执行文件夹的路径放在 PATH 环境变量中来修复它),然后我来源%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 启动 sublime text。使用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/*"
    }],
}
于 2019-11-01T14:06:45.197 回答