This change allows users to use macro values defined by Visual Studio in
library names, which might be useful e.g. when selecting different
libraries based on the build configuration.
If the filename of a library contains a special character that would
have a special meaning in the Visual Studio project file, you must use
the ASCII escape sequence for this character instead ("$" becomes "%24",
"%" becomes "%25").
This escaping will happen automatically for non-user-specified library
dependencies, including windows libraries specified in module header
blocks, and the plugin shared code target.
When the AvailableModulesList is destroyed, it will wait for the current
module scanning job (running on a background thread) to complete. This
job will try to take the AvailableModulesList::lock when it completes,
so the lock must outlive the background thread.
Previously, when saving a temporary project, two native dialogs would be
created. The first was very short-lived, as it was automatically
dismissed by the second dialog. On older macOS versions, this appeared
to work correctly (the first dialog was so short-lived that it did not
appear to the user). However, on macOS 12.0, the second dialog fails to
display altogether.
Displaying two file chooser dialogs feels like a programming error, so
the code has been reorganised a bit to avoid this case.
By default, x86_64 binaries are not signed, but arm64 binaries are. When
building universal binaries, it was possible to end up with a final
artefact that contains an unsigned x86_64 image, but a signed arm64
image. In some cases, this could cause issues in subsequent codesign
invocations.
When the result of find_if() is only compared to the container's end(),
the operation can normally be expressed more concisely using any_of(),
all_of(), or none_of().
5f7ad995af introduced an issue where the
string of external libraries would be escaped in one go. This is
incorrect, because only the individual paths should be escaped. The
semicolons separating each path should not be escaped.