- cross-posted to:
- hackernews@lemmy.smeargle.fans
- cross-posted to:
- hackernews@lemmy.smeargle.fans
I’ve been trying to learn a system language because it would enable me to access a whole new world of possibility for games, tools, and potential projects. My main problem when learning the language are:
- can I write modern C++ code using the newer standards and still compile with libraries from older standards?
- how do I even organize a C++ project? Look at the linked project, the
CMakeList.txt
is so hard to understand, the syntax looks so hard to write. - how do I install dependencies? You’re going to laugh at me, but I always used languages with package managers and I looked again at the linked project, and they write a whole
CMakeList.txt
to importImGui
(GUI library I wanna try) but if you compare the structure of the files, it’s different from the ones on the repository ofImGui
.
As you see there are a lot of problems and it pains me to not be able to solve them because Rust is so unfun to use and work with! Do you think I should try C++, carry one with it?
Thanks, hector.
Short answer: yes.
Longer version: It depends on what compiler suite you’re using. In the end the main requirements are that a) include headers are valid C++ in any of the standards you’re targeting (i.e., don’t expect to build a C++11 project which includes language features introduced in C++20) b) it generates symbols that can be resolved and linked on all binaries.
This should be done as a last resort, though. The problems you might experience won’t be trivial to troubleshoot or common.
One of the main advantages of C++ is that it does not enforce any project tree layout. It doesn’t even require a specific file type or file extension. You are free to follow what works best for you.
If you want a guideline, that can also be provided. See for example this link:
https://github.com/vector-of-bool/pitchfork
C++ does not enforce any dependency resolution system. To keep things simple but debatable, you can give Conan a try.
https://conan.io/