-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Files To Edit When Adding Or Removing Files
Stephan T. Lavavej edited this page Jun 9, 2026
·
35 revisions
The following are lists of files that need to be updated whenever we add a header file or source file to the STL.
- "Headers" are consumed directly or indirectly by users. Headers can be public, which means we intend for customers to include them directly and we consider their names and contents contractual, like
<vector>. We also have private headers which are internal implementation details, like<xutility>. - "Sources" are compiled into msvcp140.dll/libcpmt.lib/etc. For example, filesystem.cpp and xmath.hpp.
Adds, renames, and deletes are handled identically, except that the IDE's list of extensionless headers should generally never stop mentioning names.
-
stl/CMakeLists.txt
- When adding headers or sources, so that the build system picks them up.
-
stl/msbuild/stl_base/stl.files.settings.targets
- When adding sources, so that the legacy build system picks them up.
-
stl/inc/__msvc_all_public_headers.hpp
- When adding public headers, so that customers who are using this header as a way to test all the standard library headers are actually testing all the standard library headers. Note that this has separate sections for core and non-core headers.
-
stl/inc/header-units.json
- When adding headers, so that the compiler's
/translateIncludewill automatically translate from#include <meow>toimport <meow>;. (Both public headers and private headers should be listed here.)
- When adding headers, so that the compiler's
-
stl/modules/std.ixx
- When adding Standard public headers, add them to the
stdmodule here. (This will automatically add them to thestd.compatmodule.)
- When adding Standard public headers, add them to the
-
tests/std/tests/include_each_header_alone_matrix.lst
- When adding public headers, this test makes sure each header can be included by itself and that we don't have any accidental internal dependencies.
- tests/std/tests/P1502R1_standard_library_header_units/importable_cxx_library_headers.jsonc
- tests/std/tests/P1502R1_standard_library_header_units/test.cpp
-
tests/std/include/test_header_units_and_modules.hpp
- When adding Standard public headers, add test coverage for Standard Library Header Units and Modules.
-
src/SetupPackages/swix/modern/Microsoft.VisualCpp.CRT.Headers.swixproj
- Update this list to get new headers picked up by the Visual Studio installers. It has a wildcard for
*.hpp.
- Update this list to get new headers picked up by the Visual Studio installers. It has a wildcard for
-
src/SetupPackages/swix/modern/Microsoft.VisualCpp.CRT.Source.swixproj
- Update this list to get new sources picked up by the Visual Studio installers. It has wildcards for
*.cppand*.hpp.
- Update this list to get new sources picked up by the Visual Studio installers. It has wildcards for
-
src/vctools/crt/copy_crt/copy_crt_early.vcxproj
- When adding headers, this is used by parts of the build that consume the "live" headers.
- src/qa/VC/FE/compiler/tests/cxx/modules/dependency-scanning/header-units/deps.cpp
-
src/qa/VC/FE/compiler/tests/cxx/modules/dependency-scanning/header-units/stl-header-units.dat
- When adding headers to
header-units.json, this provides test coverage.
- When adding headers to
-
infra/nuget/*.nuspec.template
- When adding headers, update the files in this directory. Use
rg bitset -g "infra/nuget/*.nuspec.template"to search for precedent.
- When adding headers, update the files in this directory. Use
-
src/vc/designtime/pkg/src/VC_Pkg_Core_Registration.pkgdef
- When adding extensionless headers, this makes the Visual Studio IDE recognize them as C++. Microsoft-internal link.
-
src/vc/designtime/TextMate/cpp.tmLanguage.json
- Ditto. Microsoft-internal link.