* Allow using a range as input of joinStrings()
* Use `std::string_view` instead of `const std::string &` to pass read-only
parameters to joinStrings() and splitString*() to avoid constructing an
`std::string` from `const char *` parameters
* Use auto for return types of toMultiline() and toArrayOfLines()
* Does not affect BC because those are template functions
* Should not affect source compatibility; at least uses in my main projects
seem to be unaffected
* So one could use e.g. `std::unordered_set<std::string_view>` as target
container when splitting an `std::string_view`.
* Still an experimental feature
Some backend libraries of Syncthing Tray and Reflective RapidJSON only use
certain headers of qtutilities/c++utilities. The current solution did not
really work because it did not distinguish between the build and install
interface and also did not take compile definitions and options into
account.
* Use configuration suffix when installing icons
* Include configuration name suffix in application name
This way differently configured versions of the same applications should be
co-installable within the same prefix. That is useful to install the Qt 6
version of an application alongside the Qt 5 version.
* Remove PNG_ICON_CROP
* Not sure how that was supposed to be useful because even for projects
without PNG_ICON_NO_CROP it does not make much sense
* Test multiple sizes to determine the PNG path automatically
* Locate PNG in basic config so the path is also automatically determined
for the macOS bundle as well
* Log status message when ffmpeg/png2icns are not available
* Format CMake code more nicely
Rely on generator expressions to get the correct filename. This has never
worked because WINDOWS_EXT was usually only set after WindowsResources has
been included.
* Also enable the "lib" prefix which CMake would add by default again; it
has only been removed to preserve compatibility with qmake when switching
from qmake to CMake
* None of these changes are enabled by default to preserve compatibility