Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I really like this list as it seems to cover the core aspects of what makes C++ a good language. But the one issue I have with resource such as these, is the lack of covering how to build real work projects. The list itself seems really good and after giving the topics a light skim, I really want to dive right into it and read everything.

But the biggest thing that I struggled with (and still have no idea about) when learning C++ was trying to learn how to build real projects. This includes things like, how do you use an external library? How do you set up a build system? Which build system to use in the first place? The last time I was trying to learn C++ (about two years ago I think?) I couldn't find answers to these questions, which was pretty discouraging as I thought C++ was a really useful language to learn. I wish this article covered some of these topics for beginners looking to build something more than a simple program.



>This includes things like, how do you use an external library?

Are you using Linux or Windows? If Windows & MS Visual Studio, Yan Cherinokov (programmer at EA) made some helpful videos about how to create libraries and link them:

https://www.youtube.com/user/TheChernoProject/search?query=l...

I recommend his C++ tutorials over other ones because he often deliberately does the wrong thing to show you what the error messages look like. This teaches you how to troubleshoot your own C++ projects when you encounter the same errors.

Lots of tutorials only show the correct way but it's also important to demonstrate the common ways that beginners do it incorrectly. This teaches people how to dissect the error codes.


CMake is the modern build tool everyone seems to love, but regular old GNU/BSD Makefile is fine too. As for a package manager it seems like people are converging on Conan or vcpkg (I have no real metrics, just basing that statement on the posts I see on Reddit over at /r/cpp).


If you're on a Linux system, learn how to use Makefiles for building since they're generally useful for lots of things. Cmake is becoming more common and does some good things, but I find it very hard to use/debug (and you might find yourself debugging the Makefiles it generates anyway). It helps if you already know how to compile/link C programs...

How to incorporate external libraries depends on if they're header-only, shared libraries, or static libraries (do people still use static libraries?). pkg-config is your friend!


Most embedded systems do not support dynamic linking.

Plus unless you are doing plugins, dynamic linking is an attack vector.


Fair enough! Although the tooling for embedded systems is usually some crazy black art! (I only have experience with mbed and energia systems).


This is the main issue that prevents me from learning C++. None of this seems to be documented or explained anywhere. I can find fantastic books on how to write C++ but this entire topic isn't addressed anywhere even though it tends to be a big source of time-consuming errors/issues for beginners. I've wanted to use a certain library, spend close to a week trying to figure out how to make it accessible to my project and then give up in frustration.


Depends pretty much on the platform.

On Apple, Windows, embedded platforms and game consoles, it is pretty much "File->New Project" on the respective OS IDEs.

Then you just vendor the libraries on some company wide repository and use the IDE respective features to link to them.

Then most CI/CD systems understand the respective project files.

Naturally you can also go old style Makefiles, CMake or whatever is the build tool of the day.

It depends on the company's approach to their development stack.


If you already know C, then the knowledge of how to use a library and build system should carry over.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: