`per_config` read from undefined variables and always produced an empty
table, so no per-config property was ever checked. Fix it to parse its
arguments, build property names without a doubled `_`, and uppercase
configuration names to match `cmTarget`. Use `-` rather than `/` in
expected values since postfixes become part of artifact file names.
Single-config generators initialize per-config properties only for
`CMAKE_BUILD_TYPE`, so set one and fail if no configurations are found.
This exposes issues with the test expectations which are corrected.
The `ENABLE_EXPORTS` checks passed `executable_target` and
`shared_library_target` to `run_property_tests`, but only `executable`
was prepared, so no targets were ever checked.
ee657c9517 cmLocalGenerator: Use cached real paths for implicit include directories
2c1b01e4fe AutoRcc: Cache the rcc listing of qrc files
0af0ee077f AutoGen: Use directory listings to rule out missing headers
b8dc198329 Ninja: Avoid creating the same object directories repeatedly
ae0dc8ab9f get_filename_component: Cache the actual case of path components
6591abb0b2 cmSourceFileLocation: Avoid checking the disk repeatedly
947ec5e324 Add infrastructure to invalidate cached file system state
841b2289aa Avoid temporary files when writing generated files if different
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Osyotr <zhenchik35026@gmail.com>
Merge-request: !12612
d7a9711b4f cmGeneratorExpressionEvalFuzzer: Fix crash on unclosed genex
2f0da06e90 cmGeneratorExpressionParser: Fix crash on "$<" at end of input
b7f4d4b5dd cmGeneratorExpressionParser: Remove dead "if empty" check
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !12721
The documentation did not say which target generator expressions in
source file properties refer to. They are evaluated separately for each
target compiling the source, so a source shared by several targets can
be compiled differently by each. Document this with an example and test
a source shared by two targets.
When an expression is never closed, `extendResult` called `.front()`
without checking whether the `contents` vector was empty.
The previous check using `emptyParamTermination` was an attempt at
addressing such a case, but obviously had a gap. Since the new approach
covers this, it can be dropped.
This could be surprising since similar variable read the value if
set, while this variable if set by the user has no effect on
`ctest --interactive-debug-mode`.
The RC options were computed and generated for every vcxproj file
before, even if no rc source was actually invocing the compiler.
Now we check first if we actually need to compute these.
The MIDL options were computed and generated for every vcxproj file
before, even if no idl source was actually invocing the compiler.
Now we check first if we actually need to compute these.
The MASM options were computed and generated for every vcxproj file
before, even if no source file actually used the ASM_MASM compiler.
Now we check first if we actually need to compute these.