herzenschein

joined 2 years ago
MODERATOR OF
kde
[–] herzenschein@pawb.social 6 points 9 months ago* (last edited 9 months ago)

My understanding of Linux programming is that it’s mostly done in a code editor, then compiled on the command line.

That's not really true. You can do that, but with most IDEs (and some text editors) you really don't need to do that. You can do everything from the IDE.

I’m aware that cmake exists, and I’ve used it a bit, but I don’t like it. VS lets me just drop a .h and .cpp file into the solution explorer and I’m good-to-go. Is there really no graphical alternative for Linux?

It depends on the IDE and how it handles project files. Nowadays Qt Creator for example can just create your source code files and automatically add them to the generated project CMake. I'm pretty sure other IDEs or text editors have this functionality when paired with CMake or Meson too.

It must be noted that if the IDE has some custom project file manager (like Visual Studio does with sln and vcproj files) and you use it exclusively, you'll likely restrict your project to one platform and one IDE. Using something like CMake or Meson will make it easier to do crossplatform development and will let your users build the project without needing that specific IDE.

Personally I like modern CMake, the problem is that you'll see a lot of projects in the wild doing old CMake style, which is awful. Meson is okay, although it feels very Pythonic to me and lacks some features I use for Qt stuff.

[–] herzenschein@pawb.social 6 points 10 months ago* (last edited 10 months ago) (1 children)

Everything. It doesn't accurately describe the issue (animation stutter when using an HDD or during heavy I/O) and it doesn't mention the solution (put the cache folder in tmpfs), plus it obviously follows the traditional sensationalist tone used in clickbait.

The point is to be deliberately vague to bait people into watching it.

[–] herzenschein@pawb.social 3 points 11 months ago

It's small enough that we actually don't get many things to moderate either. I don't think I've even done any mod action so far. :D

[–] herzenschein@pawb.social 2 points 11 months ago* (last edited 11 months ago)

I remember once researching when to use variant and any, and coming up with https://stackoverflow.com/questions/56303939/c-stdvariant-vs-stdany. The naïve summary being:

any is a dressed-up void*. variant is a dressed-up union.

So you'd use std::any for similar reasons to void* (that other commenters already mentioned) while getting some advantages. In that sense it's kinda similar to using a std::span for pointer arithmetic instead of actual C-style pointer arithmetic, it makes a necessary evil safer to do.

[–] herzenschein@pawb.social 3 points 11 months ago* (last edited 11 months ago)

can I write modern C++ code using the newer standards and still compile with libraries from older standards?

Yes, but then your project ends up requiring that newer standard as minimum too (which can be fine if that's what you want).

how do I even organize a C++ project?

Well, one way that should be simple and scalable for beginners is leaving the root folder for project configuration/metadata/contribution guidelines/clang-format etc. and putting all source code inside src/.

If it's just an app, you can make smaller library targets in src/ in separate folders with meaningful names, like src/models/, src/settings/ etc. If it's a library, you typically put headers you intend to expose to your users in a src/include/ folder and use target_include_directories() to point to it, otherwise the same principle as apps applies.

It requires writing a few more, smaller CMakeLists, but it does mean you're never lost in your own code.

how do I install dependencies?

We added this recently to KDE's developer documentation, so at least for Linux it's a start: Installing build dependencies: Using build errors to find missing dependencies.

[–] herzenschein@pawb.social 1 points 1 year ago (1 children)

We're always open to doc contributions. Interested in any particular areas? 🐰

[–] herzenschein@pawb.social 3 points 1 year ago

What’s the best or recommended way to test out Plasma 6 RC2?

See also: https://community.kde.org/Plasma/Plasma_6#How_to_use/test_it

[–] herzenschein@pawb.social 2 points 1 year ago (8 children)

without the need of the moc

I got a bit of a mind freeze reading that sentence since my first thought was "why would someone deliberately give up on Qt's reflection system" but only then realized they're still using QMetaObject (the thing that actually enables reflection and signals and slots), just building it with something else.

[–] herzenschein@pawb.social 2 points 1 year ago

Afaik the reason why they're not using GitLab issues it's missing some features they need, which Bugzilla has.

Yeah.

https://community.kde.org/Get_Involved/Issue_Reporting/Why_not_GitLab_Issues

[–] herzenschein@pawb.social 2 points 1 year ago* (last edited 1 year ago)
[–] herzenschein@pawb.social 1 points 1 year ago

Nice, I was looking forward to this.

[–] herzenschein@pawb.social 2 points 1 year ago

Also, you should only use Layout attached properties when the object you're using it on is a child of a Layout, for example:

ApplicationWindow {
    ColumnLayout {
        anchors.fill: parent // Not a child of a layout, so you use anchors
        Controls.Button {
            Layout.fillWidth: true // It's a child of a layout, so you use Layout.fillWidth
        }
    }
}
view more: ‹ prev next ›