cmTarget: add support for C++ module fileset types
C++ modules have two variants which are of importance to CMake:
-
CXX_MODULES
: interface modules (those usingexport module M;
,export module M:part;
, ormodule M:internal_part;
) -
CXX_MODULE_HEADER_UNITS
: importable header units
Creating C++ modules or partitions are not supported in any other
source listing. This is because the source files must be installed (so
their scope matters), but not part of usage requirements (what it means
for a module source to be injected into a consumer is not clear at this
moment). Due to the way FILE_SET
works with scopes, they are a perfect
fit as long as INTERFACE
is not allowed (which it is not).