【问题标题】:Compiling program as c++ 14 in Sublime Text 3 as default在 Sublime Text 3 中默认将程序编译为 c++ 14
【发布时间】:2016-09-04 06:05:30
【问题描述】:

我知道我们可以使用 g++ 编译器将程序编译为 C++。但 g++ 编译器默认为 98 版本。要将其作为 C++ 14 运行,我们需要在终端中添加 -std=c++14

Sublime Text 因其轻量级和功能而被认为是竞争性编程的宝贵编辑器。在这些比赛中,时间很重要,因此时间浪费在复制文本文件然后从终端运行。与 98 相比,C++ 14 具有丰富的库和其他重要特性。因此,人们希望能够在 sublime 文本上编译代码并作为 C++ 14。

但是如何确保在 Sublime Text 3 中编译代码时,它默认编译为 C++14?

经过一番摆弄,我想出了以下解决方案 -

  1. 转到包并提取 C++.sublime-package
  2. 打开 C++ Single File.sublime-build
  3. 改变

    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
    

    "shell_cmd": "g++ -std=c++14 \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
    

    在构建和运行中添加了-std=c++14

  4. 保存并覆盖原来在 Sublime Text 3 中的包

这是正确的方法吗?它被命名为单个文件 - 如果我想使用多个文件,这需要担心吗?

【问题讨论】:

    标签: c++ compilation sublimetext3 sublimetext c++14


    【解决方案1】:

    最好创建一个新的构建系统,方法如下:

    点击Tools -> Build System -> New Build System

    这是我使用的(注意标志-std=c++14

    {
     "cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"],
     "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
     "working_dir": "${file_path}",
     "selector": "source.c, source.c++",
     "variants":
     [
       {
         "name": "Run",
         "cmd":["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
       }
     ]
    }
    

    (我相信您可以使用已有的行并将其保存到新的构建系统文件中。)

    现在保存新版本,在Tools -> Build System 中选择它。
    现在您可以使用CTRL + B 构建和运行

    【讨论】:

    • 如何编译多个文件 - 例如包。我应该担心它,因为文件名(C++ Single File.sublime-build)表明它只适用于单个文件吗?
    【解决方案2】:

    编辑默认文件的最佳方法是使用PackageResourceViewer

    安装后,从command palette 运行PackageResourceViewer: Open Resource 命令。您将看到一个包列表,您可以导航到该列表以选择要编辑的文件。

    所选文件将在新文档中打开,任何更改都将保存到位于Packages/PackageThatYouEdited/FileThatYouEdited.ext的新文件中

    这种方法的好处是Packages 中的编辑文件现在将覆盖位于sublime-package 文件中的原始文件,但原始文件将保持不变。如果您选择删除已编辑的文件,sublime-package 中的原始文件将再次处于活动状态。

    【讨论】:

      【解决方案3】:

      通常,编辑默认文件是不好的。 只需创建一个新的构建系统 Pallet -> Build: New Build System 在那里添加您的更改并根据需要保存。 然后,当你想使用它时,只需选择 Build With: (new build system name) 如果您还需要 Build - Run 选项,请改用以下代码:

      {
       "cmd": ["g++", "-std=c++14", "${file}", "-o", "${file_path}/${file_base_name}"],
       "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
       "working_dir": "${file_path}",
       "selector": "source.c, source.c++",
       "variants":
       [
         {
           "name": "Run",
           "cmd":["bash", "-c", "g++ -std=c++1y '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
         }
       ]
      
      }
      

      【讨论】:

      • -std=c++1y 与 -std=c++14 相同不,不是。
      • 如何编译多个文件 - 例如包。我应该担心它,因为文件名表明它只适用于单个文件吗?
      • @erip -std=c++14 和 -std=c++1y 有什么区别
      • -std=c++14 符合标准。 -std=c++1y 是 C++14 的预发布版本。
      • 使用答案下方的edit 链接进行更正。这就是它的用途。
      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 2015-09-04
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2019-04-01
      相关资源
      最近更新 更多