If a project() call does not have DESCRIPTION or HOMEPAGE_URL
options, it must still set the relevant variables or else those variables will
inherit values from an earlier project() call. That is inconsistent with how
VERSION is handled and is likely to be unexpected. The docs were also
ambiguous about what should happen in such cases.
375b420fdf CSharp: Fix regression in VS project type selection
8b21aa0af0 VS: Fix CSharp flag selection when linking to a static C++ library
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2427
Use of `std::log10` added by commit 02c5091c90 (cmCTestRunTest: Simplify
number width computation, 2018-09-08) broke our number width computation
on some platforms where
static_cast<int>(std::log10(static_cast<size_t>(10)))
somehow produces `0` instead of `1`. Re-implement the logic to avoid
floating-point computations.
A that target contains only `.cs` sources should be generated as a
`.csproj` project even if it links to non-CSharp static libraries.
The latter case was broken by refactoring in commit v3.12.0-rc1~160^2~7
(remove TargetIsCSharpOnly() and use methods from cmGeneratorTarget,
2018-03-19). The reason is that the `HasLanguage` method added by
commit v3.12.0-rc1~239^2~6 (cmGeneratorTarget: add HasLanguage() as
wrapper for GetLanguages(), 2018-03-19) enforces its "exclusive" check
on the combined set of source file languages and the link language.
To restore the original `TargetIsCSharpOnly` semantics, update
`HasLanguage` to enforce exclusiveness only on the list of sources.
Fixes: #18239
When a CSharp target links to a static C++ library, CMake will compute
the link language as C++ instead of CSharp. That may be incorrect and
needs further investigation, but it does not affect how VS drives C#
linking. However, it does break our flag language selection logic
and causes C++ flags to be used for CSharp. In particular, this
drops the `-platform:x86` flag on 32-bit builds.
Fix this by always selecting the CSharp flags when generating a
`.csproj` project type.
Issue: #18239
5e61b79b82 install: Set permissions on directories created by install(DIRECTORY)
fbd89b6753 Help: Add note about CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2428
The directories that are implicitly created by install(DIRECTORY)
were not having their permissions being set by
CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS. This change refactors
cmFileCopier to take this into account for directory installation.
b3d5b8b3fb ctest: Add option for live progress summary in terminal
62fbe5002a cmCTestRunTest: Thread number of completed tests through start APIs
02c5091c90 cmCTestRunTest: Simplify number width computation
6a285bb737 cmCTestRunTest: Buffer test result output before printing
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2240
In 7f530cc we taught CTest to pass extra information to CDash at submit
time. This extra info is used by CDash to initialize a buildid.
`ctest_submit(FILES)` can be used to send specific files to CDash.
These files are not necessarily associated with the build currently
being performed. For this reason, we modify the behavior of ctest_submit()
to only specify this extra info when we are submitting files from the
current build's Testing directory.
f9717725f9 link_directories(): enhance capabilities
b5915744eb LINK_DIRECTORIES target property: add policy for absolute paths check.
a71caab46b LINK_DIRECTORIES: Add new properties and commands
5ca130e223 Refactoring: introduce function to check if a string is a generator expression
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2403
d8a3939aef CPack/Deb: Add ability to split out debug symbols into .ddeb package
42fbff45e4 CPack/Deb: Use CMAKE_COMMAND to set the environment
66ab24a4c5 Help: Fix typo
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2399
We disabled this in commit 1fe0d72eb6 (clang-tidy: exclude
'misc-noexcept-move-constructor', 2018-09-24) due to false positives.
Restore it and use a NOLINT comment to suppress them instead.
MSBuild expects a `/p:Platform=...` argument to tell it which platform
to build among those in the `.vcxproj` files. We have not historically
had to do this because we generate only one platform. However, when
a project uses `include_external_msproject` the included project file
may have other platforms.
Fixes: #18308
When constructing a global generator instance in `--build-and-test` mode
we need to set the platform passed by `--build-generator-platform`
directly on the generator. The old code that set it on the `cmake`
class instance did nothing because that only affects cache
initialization, which is not done by `--build-nocmake`.
These new capabilities enable to manage link directories
Two new properties:
* target properties: LINK_DIRECTORIES and INTERFACE_LINK_DIRECTORIES
One new command
* target_link_directories(): to populate target properties
Fixes: #17215
Replace use of raw pointers and explicit reference counting with
`std::shared_ptr<>`. Use a discriminated union to store either the
bottom level or a call/file context in each heap-allocated entry.
This avoids storing a copy of the bottom in every `cmListFileBacktrace`
instance and shrinks the structure to a single `shared_ptr`.