linkWindowsCppImplStubs function

void linkWindowsCppImplStubs(
  1. List<ModuleInfo> moduleInfos, {
  2. String baseDir = '.',
})

Creates Windows-specific C++ impl stub files for modules that target windows: WindowsNativeImpl.cpp. These stubs live in windows/src/ so windows/CMakeLists.txt can reference them via a relative path.

Implementation

void linkWindowsCppImplStubs(
  List<ModuleInfo> moduleInfos, {
  String baseDir = '.',
}) {
  final libDir = Directory(p.join(baseDir, 'lib'));
  final specFiles = libDir.existsSync() ? libDir.listSync(recursive: true).whereType<File>().where((f) => f.path.endsWith('.native.dart')).toList() : <File>[];
  final windowsCppLibs = specFiles.where(isWindowsCppModule).map((f) {
    final stem = p.basename(f.path).replaceAll(RegExp(r'\.native\.dart$'), '');
    return extractLibNameFromSpec(f) ?? stem;
  }).toSet();

  for (final m in moduleInfos.where(
    (m) => m.isCpp && windowsCppLibs.contains(m.lib),
  )) {
    _writeOrMigratePlatformImplStub(
      baseDir: baseDir,
      platform: 'windows',
      lib: m.lib,
      requestsSeparateImpl: m.windowsRequestsSeparateImpl,
      genericStubContent: t.windowsCppStubContent(lib: m.lib, className: _toPascalCase(m.lib)),
    );
  }
}