Commit Graph

128 Commits

Author SHA1 Message Date
HannaWAR
2628c52e04 source_group: add genex support
Fixes: #19813
2025-11-24 21:08:46 +03:00
AJIOB
5de7a09e77 Tests/RunCMake: Match dots more precisely, part 3 2025-10-20 14:45:24 -04:00
AJIOB
62b112ee25 Tests/RunCMake: Match CMakeLists.txt file name more precisely 2025-10-16 17:42:12 +03:00
Brad King
e180663555 Tests/RunCMake: Move VS Solution cases from VS10Project to VSSolution 2025-09-16 09:40:58 -04:00
AJIOB
9851ddfc11 VS: Check all default suppressed MSBuild flags 2025-09-11 13:59:19 +03:00
AJIOB
7202539fd4 VS: Suppress MSBuild default flags not specified by project or user 2025-09-11 13:59:19 +03:00
Brad King
54e7008e2d Merge topic 'vs-cleanup'
78d9564d50 cmGlobalVisualStudio7Generator: Inline short method at only call site
034cc29b89 cmGlobalVisualStudio7Generator: Constify .sln write methods
5004602715 cmGlobalVisualStudio7Generator: Factor folder collection out of write method
6ae4ed30d9 cmGlobalVisualStudio7Generator: Factor target collection out of write method
5582eb292e cmGlobalVisualStudio7Generator: Update outdated comment
2297ba9399 cmGlobalVisualStudio7Generator: Remove redundant C++ modules check
ccbd61dd53 cmGlobalVisualStudio7Generator: Remove unused member
93e34a5e0e cmGlobalGenerator: Constify GetTargetDirectDepends
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11130
2025-09-02 10:56:09 -04:00
Brad King
c07545b945 Tests/RunCMake/VS10Project: Enable case covering VS_SOLUTION_ITEMS
This was missed in commit 0bb13ba0e6 (VS: Add support for Visual Studio
solution items, 2024-10-27, v4.0.0-rc1~423^2).
2025-09-01 15:25:17 -04:00
John Parent
f97d1bf7d8 Visual Studio: support shortened object filenames 2025-07-29 09:44:03 -04:00
Ben Boeckel
050f891d81 Tests: choose an explicit FULL strategy in tests expecting it
Since it can be set in the environment when running the test suite,
guard tests which are sensitive to intermediate directory strategy
changes with explicit settings.
2025-07-29 08:06:30 -04:00
Ben Boeckel
1d701491a2 pchreuse: always ask the PCH reuse target for PDB information
The property settings set things up once, but nothing ensures that
post-reuse hookup that any property changes propagate. Instead, when
computing PDB information, if PCH reuse is enabled, just always use its
values.

Also drop enforcement at generate time of property value consistency as
it is now ignored when PCH reuse is in effect.

Additionally, if a target is PCH-reused, generate a PDB output directory
for it.

The `PchReuseFromIgnoreOwnProps` test failed previously because the
post-reuse link update of the consuming `PDB` properties are no longer
considered. The `PchReuseFromUseUpdatedProps` failed because the
post-reuse link did not update the copy of the properties added to
consuming reuse target properties.
2025-07-22 12:42:57 -04:00
AJIOB
99d09ec45a VS: Suppress MSBuild default link flags not specified by project or user
MSBuild adds some `link` flags by default, but for CMake they may not
match what's produced by command-line generators.  If these flags are
not specified by the project or user, suppress them.

Fixes: #27004
2025-06-17 14:12:43 -04:00
Brad King
7db3dbddb2 VS: Suppress MSBuild default flags not specified by project or user
`Microsoft.Cl.Common.props` adds some `cl` flags by default, but for
CMake they may not match what's produced by command-line generators.
If the `-Zc:wchar_t`, `-Zc:forScope`, and/or `-Zc:inline` flags are
not specified by the project or user, suppress them.

Fixes: #26964
2025-06-02 14:59:38 -04:00
Nikita Nemkin
e5fd973b14 VS: Set the linker image version using the target's VERSION property
This matches the behavior of NMake, Ninja and older Visual Studio
generators.

Fixes: #13130
2025-02-11 17:36:34 +05:00
Nikita Nemkin
2e798a4137 VS: Fix UnityBuild test selection in VS10Project tests
Do not overwrite RunCMake_GENERATOR_TOOLSET and do not assume
that it always contains toolset version. (It could be something
like "host=x64".)
2025-02-11 17:36:24 +05:00
Brad King
c283aafe62 CMP0057: Remove support for OLD behavior 2025-01-22 10:40:53 -05:00
Brad King
90d814f024 CMP0054: Remove support for OLD behavior 2025-01-20 09:46:55 -05:00
Brad King
3c0dbb66f5 CMP0011: Remove support for OLD behavior 2025-01-17 09:28:36 -05:00
Brad King
72e27a4856 Merge topic 'fix-typos-found-by-pre-commit-hooks'
d620d77d26 FindDoxygen: Rename `_Doxygen_dne_header` -> `_Doxygen_do_not_edit_header`
e7ff3cccea PushToAndroidDevice.cmake: Rename `cmake_parse_arguments` prefix
bc8621d999 Fix: A lot of typos in code found by `typos`
b33beb7af5 Help: Fix some typos found by `sphinx-lint`
78e45c2db6 Style: Replace TABs with spaces for indentation in some files
74e0173f66 Tests(NuGet): Fix the test to ignore empty and space-only lines

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10151
2025-01-14 09:44:34 -05:00
Alex Turbov
78e45c2db6 Style: Replace TABs with spaces for indentation in some files
Mark files that must use TABs to indent in the `.gitattributes`.
Use space instead of TABs in sources and some data/test files.
2025-01-12 18:49:25 +04:00
Lauri Vasama
6c187aae3b VS: Fix VS_SOLUTION_ITEMS for absolute paths
This was missed in commit 0bb13ba0e6 (VS: Add support for Visual Studio
solution items, 2024-10-27).

Fixes: #26593
2025-01-09 11:29:32 -05:00
Lauri Vasama
0bb13ba0e6 VS: Add support for Visual Studio solution items
Files listed in the `VS_SOLUTION_ITEMS` directory property of a project
directory are added as solution items in the 'Solution Items' solution
directory.

If `source_group` is applied to the files listed in `VS_SOLUTION_ITEMS`,
solution groups matching the names of the source groups are created
outside of the default 'Solution Items' group.  If not items are placed
into the default group, it is not created.

Solution items added to subprojects are not included in the top-level
project.

Closes: #26409
2024-11-22 09:12:19 -05:00
Darragh Coy
4ee8705b12 VS: add source property VS_CUSTOM_COMMAND_DISABLE_PARALLEL_BUILD
This boolean setting allows parallel building to be disabled for
individual source files built via `add_custom_command`. Using this
option is equivalent to setting policy `CMP0147` to the `OLD` behavior.

Closes: #26413
2024-11-06 13:29:57 -05:00
Brad King
ef984ce556 Tests/RunCMake/VS10Project: Fix file path case consistency 2024-10-21 09:51:02 -04:00
Brad King
f4aa34daa7 Tests/RunCMake: Update cmake_minimum_required versions to 3.10
For policy-specific tests, use the version before the policy was
introduced.  Otherwise, use 3.10 where possible.
2024-10-03 11:52:22 -04:00
Darragh Coy
55831faf5b VS: Honor VS_TOOL_OVERRIDE for known source file types too
Visual Studio Generator: The `VS_TOOL_OVERRIDE` source file property
would previously only be respected for file types that CMake didn't know
how to build out of the box. This change allows the user to override how
any source file is built with a custom build tool, even ones with
standard/recognized extensions such as `.cxx`, `.idl`, etc.

Fixes: #26336
2024-10-01 14:00:00 -04:00
Calum Robinson
0721f9bf0f VS: Add VS_FRAMEWORK_REFERENCES
Fixes: #26082
2024-06-26 16:44:51 +01:00
halx99
56a96d1f1f VS: Add option to import .props in .vcxproj.filters files
Adds new target property VS_FILTER_PROPS

Fixes: #25948
2024-05-02 00:30:00 +08:00
Brad King
67de5b7b82 VS: Suppress MSBuild default settings affected by UseDebugLibraries
`Microsoft.Cl.Common.props` changes some default settings based on
`UseDebugLibraries`.  CMake models its own controls for these settings,
so if the project does not set them, explicitly suppress them to avoid
letting `UseDebugLibraries` affect them.
2024-02-19 10:40:40 -05:00
Craig Scott
d0f395525f Tests: Quote possibly empty string(REPLACE) argument
The ${unity_source_line} variable should not normally be empty,
but it has been observed that it sometimes is due to other factors.
Rather than causing string(REPLACE) to fail due to the wrong
number of arguments, quote the variable so that the
UnityBuildPre2017 test case fails with a more appropriate
error in the block just after the usage fixed by this change.
2024-01-01 11:58:22 +11:00
Deniz Bahadir
cbddc66277 VS: Consider macros with values when determining CharacterSet
In order to determine what character-set (Unicode, Multi-Byte, none)
shall be set in the generated `*.vcxproj` files, CMake checks if one of
the macros `_UNICODE` or `_SBCS` are defined.
However, as these macros can be defined with or without a value, the
check should always recognize these macros whether they are defined with
a value or without. That is now assured by this commit.

Fixes: #25379
2023-11-06 23:41:23 +01:00
Brad King
0d1529000d VS: Revert "Add CMake input files to ZERO_CHECK"
Since commit df58dbb0e9 (VS: Add CMake input files to ZERO_CHECK,
2023-03-19, v3.27.0-rc1~157^2), projects that specify the same file both
as input to `configure_file` and as the `MAIN_DEPENDENCY` of a custom
command fail to configure.  Revert the change pending further
investigation.  Add a test case demonstrating the problem.

Issue: #24557
Fixes: #25149
2023-08-02 11:53:48 -04:00
Alexander Neundorf
df58dbb0e9 VS: Add CMake input files to ZERO_CHECK
Add all cmake input files to the `ZERO_CHECK` project.  Place files
under `CMAKE_SOURCE_DIR` in a folder structure matching the directory
structure.  This way they are easier to find, and Visual Studio does not
close them when reloading the project.

Fixes: #24557
2023-04-25 17:35:39 -04:00
Brad King
4c866cac40 VS: Do not regenerate build system concurrently with CMP0147
The VS generators add a custom command to `CMakeLists.txt` to re-run
CMake when input files have changed.  Mark this custom command as if it
were specified with `USES_TERMINAL`.  We already do this for the
equivalent `rebuild_cache` target in Makefile and Ninja generators.

This matters since commit d6353e74b4 (VS: Add policy to build custom
commands concurrently, 2023-03-10) because with policy CMP0147 set to
NEW, we now add `BuildInParallel` in `.vcxproj` file entries for custom
commands that do not have `USES_TERMINAL` set, but we do not want to
re-run CMake concurrently with other custom commands.

Issue: #18405
2023-03-15 14:33:36 -04:00
Brad King
d6353e74b4 VS: Add policy to build custom commands concurrently
In commit 33c15ae2b9 (VS: Build custom commands concurrently when
possible, 2023-01-19, v3.26.0-rc1~56^2) we added `BuildInParallel` to
custom commands in `.vcxproj` files, but that had to be reverted by
commit abb1c12162 (VS: Revert "Build custom commands concurrently when
possible", 2023-03-07, v3.26.0-rc6~3^2) because some projects may have
custom commands that accidentally rely on serial execution in MSBuild.

Add a policy to use `BuildInParallel` for custom commands in projects
that have been updated to set the policy to `NEW`.

Fixes: #18405
2023-03-12 07:51:58 -04:00
ζeh Matt
eef13a4b33 VS: Add COMMON_LANGUAGE_RUNTIME support for "netcore"
Generate `CLRSupport` for Visual Studio projects.

Fixes: #22054
2022-10-28 11:55:58 -04:00
Glen Chung
0e96a20478 MSVC: Add abstraction for debug information format
Replace our hard-coded default for `/Zi` with a first-class abstraction
to select the debug information format an enumeration of logical
names.  We've long hesitated to do this because the idea of "debug
information format" touches on related concepts on several platforms.
Avoid that scope creep by simply defining an abstraction that applies
only when targeting the MSVC ABI on Windows.

Removing the old default flag requires a policy because existing
projects may rely on string processing to edit them and choose a
runtime library under the old behavior.  Add policy CMP0141 to
provide compatibility.

Fixes: #10189
2022-09-14 09:12:47 -04:00
Kyle Edwards
2ef64745c8 Merge topic 'file-set-source-group'
970052fedd FILE_SET: Fix source group detection
bcc3965813 Tests: Fix VS10Project SourceGroupTreeCMakeLists check

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7609
2022-08-25 09:14:21 -04:00
Kyle Edwards
970052fedd FILE_SET: Fix source group detection
Call MatchChildrenFiles() instead of MatchesFiles() in order to
account for files being in subgroups of source groups.

Fixes: #23880
2022-08-24 16:07:24 -04:00
Kyle Edwards
bcc3965813 Tests: Fix VS10Project SourceGroupTreeCMakeLists check
Fix an `IN LISTS` loop, fix a variable check, and escape backslashes
in the regex used to search for source group names.
2022-08-24 16:07:24 -04:00
Jonas Fierlings
d99d33d749 VS: Generate IntDir property for INTERFACE libraries
This prevents MSBuild from complaining with warning MSB8028.

Fixes #23043
2022-07-08 16:47:01 +02:00
Brad King
9a0a94fdaa VS: Add variable to to turn off Visual Studio compile batching
Extend the change from commit b764c7c273 (VS: Add property to turn off
Visual Studio compile batching, 2022-02-07, v3.24.0-rc1~710^2) by
adding a variable to initialize the property on every target.

Issue: #23179
Fixes: #23639
2022-06-22 12:07:03 -04:00
Niyas Sait
834422e075 Tests: Fix test failures for Windows Arm64 platforms 2022-05-11 18:13:25 +01:00
Florian Schweiger
d89af11f89 VS: Add StartupObject property for managed .NET projects 2022-04-12 15:35:17 +02:00
Brad King
20cd951c9f VS: Add compiler flag table entry for -FI followed by separate argument
The MSVC `/FI` flag accepts an attached value or a following argument.
Previously our flag tables only had entries for the former.  Add
the latter.

Fixes: #23382
2022-04-01 16:37:08 -04:00
Kaloyan Donev
b764c7c273 VS: Add property to turn off Visual Studio compile batching
Resolves: #23179
2022-02-08 08:07:00 +02:00
Brad King
67cb256cfe Merge topic 'vs2022-v143-link-guard-cf'
9e24437c91 VS: Remove the '/guard:cf' flag from v143 link flag table

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6858
2022-01-13 15:18:49 -05:00
Benjamin Sluis
9e24437c91 VS: Remove the '/guard:cf' flag from v143 link flag table
Apply the change from commit db35e3cfd6 (VS: Fix support for '/guard:cf'
linker flag for v142, 2019-01-24, v3.14.0-rc1~74^2~2) to the v143 flag
table.

The entry for `LinkControlFlowGuard` in `v143_Link.json` does not work
when used in a `.vcxproj` file.  Drop our link flag table entries for
this toolset so that the flag will be passed via `AdditionalOptions`.

Also add a test case.
2022-01-12 16:45:07 -05:00
Brad King
71f15be957 VS: Fix compilation of single source with PCH in Unity Build
Sources that are part of a unity build are normally not compiled
individually.  However, the VS IDE allows a single source to be
compiled.  This can also be achieved on the command line:

    msbuild my.vcxproj ... -t:ClCompile -p:SelectedFiles=<src>

where `<src>` is the path in the vcxproj `ClCompile` entry.

In a target with precompiled headers, the source needs PCH settings to
support individual compilation even if the normal unity build does not.
2021-10-19 11:50:07 -04:00
Steven Boswell
f21158cdfe VS: Honor VS_SETTINGS source file property on all sources
Extend the feature added by commit 2ce42f281f (VS: Add VS_SETTINGS
source file property, 2020-03-18, v3.18.0-rc1~449^2~3) to support
all source file types.
2021-09-09 14:19:28 -04:00