If --preset is specified with no path argument, use the current
directory as the source directory, the preset's binaryDir as the
binary directory, and don't issue the standard warning for no path
specified.
Fixes: #21386
In the following scenario (with 3.18 policies):
1. A CXX target is created.
2. CUDA language is enabled.
CMake 3.18 introduced CMP0104, which requires CUDA_ARCHITECTURES to be
set. Because the CXX target was created before CUDA was enabled it
wouldn't have it set. The Visual Studio generator would however end up
computing CUDA compile options for the CXX target, which would result in
a fatal error due to the policy violation.
There doesn't seem to be a reason to do this for targets that don't
actually use the CUDA language, so we can skip and generate the CXX
target just fine.
Fixes: #21341
In commit e637744c51 (Xcode: Use "Link Binary With Libraries" to link
any library, 2019-07-10, v3.19.0-rc1~494^2~1) we accidentally added all
the library type files to "Link Binary With Libraries" build phase if
they were passed in as source files. Revert that change as any actually
linked libraries will be added to that build phase later in the
`AddDependAndLinkInformation` call.
Fixes: #21361
If a path argument with no -S or -B leads to a cache directory,
use that directory as the binary directory. Otherwise, use the
binary directory from the preset.
Fixes: #21311
Make this field separate for both architecture and toolset. Allow
architecture and toolset to be either strings or objects with value
and strategy fields.
Fixes: #21317
These were included when the Fortran flag table was first created by
commit 10c91ded4f (ENH: add support for Intel Fortran Visual studio IDE,
2008-04-30, v2.8.0~2227), but they map to fields not actually supported
by the IDE. Remove their table entries.
Instead use just `/debug:minimal` and `/debug:full` to control debug
information level in VS Intel Fortran. Let flags like `/Z7` pass
through as raw additional options because they have no corresponding IDE
property and can be used to complement the supported options.
Fixes: #21340
Make a distinction between strings which simply use the
$vendor{<...>} macro, which is valid but makes it unusable by CMake,
and strings which actually contain invalid macro expansions.
Fixes: #21308
Fix the check added by commit 2ff1693066 (find_package: avoid showing
files as directories when searching config files, 2020-09-30,
v3.19.0-rc1~67^2) to avoid skipping the root prefix `/`.
Fixes: #21324
In commit 7a969fe21d (cmMakefile: Refactor API to better handle empty
config values, 2020-06-30, v3.19.0-rc1~567^2), calls to
`GetGeneratorConfigs` that pass `OnlyMultiConfig` only want to get any
configurations listed if the generator is multi-config. Fix the
implementation to actually do that.
Fixes: #21316
f7a5f28318 cmake: Fix '-E cat' command for binary files on Windows
90b39a5209 cmConsoleBuf: Factor out cout/cerr console buffer management
f1fdd15863 clang-format: Fix include block order in ctest.cxx and cpack.cxx
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5364
In commit efe48189bf (cmake-gui: Restore application icon on macOS,
2020-10-13, v3.19.0-rc1~2^2) and commit f7ae4f572b (cmake-gui: Restore
application icon on Windows, 2020-10-13, v3.19.0-rc1~1^2) we attached
the icon source files to all consumers of `CMakeGUILib`, but that
includes other libraries like `CMakeGUIMainLib`. The latter library is
meant only for direct consumption by a GUI executable, so use that to
propagate the icons instead.
In commit 41e223deb3 (CMake GUI: Split up into libraries, add test shim,
2020-09-14) the Windows resource source file that references the icon
was moved to CMakeGUILib, but it needs to be directly in the main
application in order to be attached properly.
In commit 41e223deb3 (CMake GUI: Split up into libraries, add test shim,
2020-09-14) the macOS icon source file was moved to CMakeGUILib, but it
needs to be directly in the main application in order to be attached to
the `.app` in the right place.