How to Build C++ Projects with STDIN in Sublime Text 3
I've been a die-hard fan of
Sublime Text (ST), all the time from the 2nd to the 3rd version now.
To be frank, I use
ST in almost all situations: taking lecture notes in LaTeX, drafting small projects in Python or R (while for large projects,
Jupyter Notebook and
RStudio are stronger platforms), or tracking my Todo-list in Markdown. Everything works so smoothly and lightly with
ST, especially compared with IDEs like
Visual Studio. On the other hand, it is more friendly to users who are not so keen on shortcuts -- I mean, shortcuts for everything, like
Eclipse (there are abundant shortcuts in
ST already and that's enough for me). It must be a different world if I mastered that technique, but for now... I think I'm fine with a large and smart touchpad on my MBP.
However, there's one thing missing in
ST3, and that is C++ project building. To be specific, there're two features that are not implemented yet:
- The only build system for C++, is called
C++ Single File, and you know what that means. The only scenario that works is when you just have one file suffixed by
- You cannot input through
STDINbecause the editor freezes when
cinis met. No input, no.
These two missing features are really annoying at first when I need to write a project in C++ and do some debugging. However, eventually I managed to write my own build system for C++ which accepts multiple files (including head files) and even inputs. I'll just skip the steps to create a new build system as they can be easily handled if you check the menu. The codes for the system is as below:
I hope this post can help anyone who need this trick.
1.There's actually one more text editor (not IDE) I've tried:
Atom. It's developed and maintained by GitHub and looks really fancy at very first glance. However, at least on my MBP, it's not as fast as
ST3and was later knocked out. ↩︎
2.Note here I included a parameter
-I /opt/local/includein case external libraries like
boostare required in the code. ↩︎
3.Instead of the base-name of the file, I name this executive program as a simple
abecause when there're multiple
cppfiles in the project, it's hard for the computer to locate which one contains the main code and determine a name after that file. In many cases, the
cppfile that is active when you hit
command+Bonly declares some classes, but the executive program is named after it. That's the actual case I encountered and want to eliminate. ↩︎