@ComixHe No problem. Oh, you also said that you now need C++17. Yes, the minimum language version requirement in Qt6 was bumped from C++11 to C++17. It makes a lot stuff easier, the implementation can be cleaner and it is supported by all major compilers anyway.
@AnneRanch ABANDONED
I have found another full copy of my project.
Without any modification - using same kit and same version of Ubuntu - it compiles and run .
I am loosing patience to troubleshoot tools looking for weird failures like this one, I like to spent my time doing constructive work and I need to continue building my project.
However, I do appreciate the forum replies...
Cheers
I can only guess. But, I would say the new way is much better. Having all arguments as separate entries in a list does away with having to quote some arguments and escaping quotes where necessary. Sure, this only applies to arguments which have spaces inside them (which is rarely the case), but in general it is much better. In your case with calling bash with arguments it is certainly a much better way. There are countless posts on this forum (both Windows- and Linux-related) where people got this wrong (using the old way).
arguably there have been some good enhancements to C++ but there is also way too much syntactic fluff that creates more religions for the zealots to jihad over. IMMHO, way too much effort to "pythonize" the language. In my world: embedded systems, I need to see a clear line from assembler code to abstract algorithms in c++...some of the modern fluff makes disecting the code a painful experience...and too often it's a moving target to "keep up" with the latest officially blessed method for accomplishing something.
To quote "Real Programmers Don't Use PASCAL" (Datamation, 1982) -- "What you see is what you get is a bad concept...we want You asked for it, you got it!"
@Chris-Kawa
Yes, thank you for clarifying, this is about the conclusion I had come to myself.
I now get that class Foo { static int bar; } behaves for my question's purpose similarly to extern int bar; as a global in C. This implies some module will provide a int bar; implementation/storage definition. However, if nothing in any code actually references that bar then the linker won't care or complain; once something does then the linker will error with "can't find it". In this sense, C++ class-static variables (and for that matter functions/methods) behave the same. So it's just a glorified extern, and I get it now :)
Apart from the path issue note that having two mainwindow.h files including each other is a recipe for trouble. One thing is that they both start with #ifdef MAINWINDOW_H, so including one within another will "cut out" the inner one. You should at least change the include guard names, but to avoid problems it's a good idea to not have duplicated file names/include guards across your build at all.