addConfigureArgs('-DENABLE_SM2_PRIVATE_KEY_EXPORT=ON') ->build(); } #[BuildFor('Windows')] public function buildWin(LibraryPackage $lib): void { $buildDir = "{$lib->getSourceDir()}\\builddir"; // GmSSL requires NMake Makefiles generator on Windows WindowsCMakeExecutor::create($lib) ->setBuildDir($buildDir) ->setCustomDefaultArgs( '-G "NMake Makefiles"', '-DWIN32=ON', '-DBUILD_SHARED_LIBS=OFF', '-DENABLE_SM2_PRIVATE_KEY_EXPORT=ON', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_C_FLAGS_RELEASE="/MT /O2 /Ob2 /DNDEBUG"', '-DCMAKE_CXX_FLAGS_RELEASE="/MT /O2 /Ob2 /DNDEBUG"', '-DCMAKE_INSTALL_PREFIX=' . escapeshellarg($lib->getBuildRootPath()), '-B ' . escapeshellarg($buildDir), ) ->toStep(1) ->build(); cmd()->cd($buildDir)->exec('nmake gmssl XCFLAGS=/MT'); $libPath = "{$lib->getBuildRootPath()}/lib"; $incPath = "{$lib->getBuildRootPath()}/include/gmssl"; FileSystem::createDir($libPath); FileSystem::createDir($incPath); FileSystem::copy("{$buildDir}\\bin\\gmssl.lib", "{$libPath}/gmssl.lib"); FileSystem::copyDir("{$lib->getSourceDir()}\\include\\gmssl", $incPath); } }