-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Files To Edit When Adding Or Removing Files
Stephan T. Lavavej edited this page Feb 16, 2024
·
27 revisions
The following are lists of files that need to be updated whenever we add a header file, source file, or binary 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.
- "Binaries" are arch/flavor-specific DLLs (and their PDBs). For example, bin\i386\onecore\msvcp140_codecvt_ids.dll and bin\i386\msvcp140_codecvt_ids.i386.onecore.pdb.
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
/translateInclude
will 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
std
module here. (This will automatically add them to thestd.compat
module.)
- 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.
- Notify the vctowner and msvc-qb aliases when editing any installer-related files.
- Note: We need to notify them with a new email so it can be properly noticed and acted upon. Don't CC them on an existing email thread, and don't ping them in a code review - those can easily be missed.
-
src/vctools/crt/lkgsync/updatelkgmanifest.cmd
- When adding headers or sources, run this to update scripts used for synchronizing libraries team code into the Windows tree.
-
src/SetupPackages/swix/crt.headers/files.base.swr
- Update this list to get new headers picked up by the Visual Studio installers.
-
src/SetupPackages/swix/crt.source/files.base.swr
- Update this list to get new sources picked up by the Visual Studio installers.
-
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
-
src/vctools/StdIfc/modules/core.cpp
- When adding Standard public headers, add to this list to ensure they're included in the "experimental modules" support.
-
src/vctools/crt/msdl_publishing/msdl_publishing.xml
- When adding binaries for which we want to publish private symbols and binaries to the public symbol server, we need to add each architecture and flavor of the DLL and its PDB to this file under the corresponding architecture. We need to run
msdl_publishing/checkmsdlxml.cmd
to ensure edits are reflected in the local build.
- When adding binaries for which we want to publish private symbols and binaries to the public symbol server, we need to add each architecture and flavor of the DLL and its PDB to this file under the corresponding architecture. We need to run
-
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.