I know that we can compile program as C++ using g++ compiler. But g++ compiler defaults to 98 version. To run it as C++ 14, we need to add -std=c++14
in termina
It's better to create a new build system, here's how:
Click on Tools -> Build System -> New Build System
.
This is what I use (notice the flag -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}'"]
}
]
}
(I believe you can just use the line you already have and save it to a new build system file.)
Now save the new build, select it in Tools -> Build System
.
And now you can build and run with CTRL + B
The best way to edit default files is to use PackageResourceViewer.
Once installed, run the PackageResourceViewer: Open Resource
command from the command palette
. You will be shown a list of packages which you can navigate into to select the file you wish to edit.
The selected file will be opened in a new document, and any changes will be saved to a new file located at Packages/PackageThatYouEdited/FileThatYouEdited.ext
The benefit of this method is that the edited file in Packages
will now override the original file that resides within the sublime-package
file, but the original file will remain intact. Should you choose to delete the edited file, the original file in the sublime-package
will once again be active.
Usually, it's bad to edit default files. Just create a new build system Pallet -> Build: New Build System add your changes there and save it as you want to. Then, when you want to use it just select Build With: (new build system name) If you also want the Build - Run option, use this code instead:
{
"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}'"]
}
]
}