-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Files To Edit When Adding Or Removing Files
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.h.
- "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.) -
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/custom_format.py
-
tests/std/tests/P1502R1_standard_library_header_units/custombuild.pl
-
tests/std/tests/P1502R1_standard_library_header_units/test.cpp
When adding Standard public headers, add test coverage for Standard Library Header Units.
test.cpp
shouldimport
the new header, and then add a small example of usage below, in sorted order.
Ask an STL maintainer to do this for you if you change the set of files in a pull request.
-
When editing any installer-related files, notify the vctowner alias; they're responsible for editing the mechanism by which Visual Studio is built with new bits.
-
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 (for example,
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\crt\src
). -
src/vctools/crt/copy_crt/copy_crt.nativeproj
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/test.cpp
When adding headers to
header-units.json
, this provides test coverage. -
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/managed/msvcurt.settings.targets
When adding sources, this is used by our build system (for /clr:pure's msvcurt*.lib).
-
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.
Ask an STL maintainer to do this for you if you change the set of files in a pull request.
-
src/vc/designtime/pkg/src/VC_Pkg_Core_Registration.pkgdef
When adding extensionless headers, this makes the Visual Studio IDE recognize them as C++. Technically we must mark private headers here if they are extensionless, but going forward we've been giving private headers a
.h
extension so that this list need not be modified. Microsoft-internal link. -
src/vc/designtime/TextMate/cpp.tmLanguage.json
Ditto. Microsoft-internal link.