Chuyu-Team / VC-LTL

Shared to msvcrt.dll and optimize the C/C++ application file size.
Eclipse Public License 2.0
1.05k stars 204 forks source link

nmake支持 #25

Closed myfreeer closed 6 years ago

myfreeer commented 6 years ago

能否提供在nmake中调用VC-LTL的方式或脚本

mingkuang-Chuyu commented 6 years ago

目前需要手动修改include 以及lib环境变量。最后链接时手动添加对应的obj以及lib文件即可。

myfreeer commented 6 years ago

参数:

LFLAGS = $(LFLAGS) /LIBPATH:$(VC_LTL_PATH)/$(BITS) /LIBPATH:$(VC_LTL_PATH)/VC/14.0.24210/lib/$(BITS)
LIBS = msvcrt_light.obj ltl.lib vc.lib ucrt.lib $(LIBS)
CFLAGS = $(CFLAGS) /I$(VC_LTL_PATH)/VC/14.0.24210/include /D_NO_CRT_STDIO_INLINE=1 /D_Build_By_LTL=1 /D_DISABLE_DEPRECATE_STATIC_CPPLIB=1 /D_STATIC_CPPLIB=1

命令:

link  /LIBPATH:C:\projects\7958a54b0e8e45d8acc0b6a8edd617d9\VC-LTL/x64 /LIBPATH:C:\projects\7958a54b0e8e45d8acc0b6a8edd617d9\VC-LTL/VC/14.0.24210/lib/x64 -nologo -OPT:REF -OPT:ICF /LARGEADDRESSAWARE /FIXED -out:AMD64\7zcl.exe AMD64\StdAfx.obj  AMD64\Client7z.obj  AMD64\IntToString.obj  AMD64\NewHandler.obj  AMD64\MyString.obj  AMD64\StringConvert.obj  AMD64\StringToInt.obj  AMD64\MyVector.obj  AMD64\Wildcard.obj  AMD64\DLL.obj  AMD64\FileDir.obj  AMD64\FileFind.obj  AMD64\FileIO.obj  AMD64\FileName.obj  AMD64\PropVariant.obj  AMD64\PropVariantConv.obj    AMD64\FileStreams.obj                                                AMD64\resource.res msvcrt_light.obj ltl.lib vc.lib ucrt.lib  oleaut32.lib ole32.lib user32.lib advapi32.lib shell32.lib

输出(部分):

ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp__fdlog already defined in ltl.lib(msvcrt_IAT.obj)
ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp__dsin already defined in ltl.lib(msvcrt_IAT.obj)
ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp__ldsin already defined in ltl.lib(msvcrt_IAT.obj)
ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp__fdsin already defined in ltl.lib(msvcrt_IAT.obj)
ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp_acosh already defined in ltl.lib(msvcrt_IAT.obj)
AMD64\7zcl.exe : fatal error LNK1169: one or more multiply defined symbols found
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x491'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.

Log: https://ci.appveyor.com/api/buildjobs/5usmt7mcgy30ua2w/log

mingkuang-Chuyu commented 6 years ago

/LIBPATH 还有/I参数不能用。因为优先级滞后。你需要修改include 以及lib环境变量

set include = XXXXX/VC/14.0.24210/include;%include% 类似这样

myfreeer commented 6 years ago

makefile参数:

LIBS = $(VC_LTL_PATH)/$(BITS)/msvcrt_light.obj $(VC_LTL_PATH)/VC/14.0.24210/lib/$(BITS)/ltl.lib $(VC_LTL_PATH)/VC/14.0.24210/lib/$(BITS)/vc.lib ucrt.lib $(LIBS)
CFLAGS = $(CFLAGS) /I$(VC_LTL_PATH)/VC/14.0.24210/include /D_NO_CRT_STDIO_INLINE=1 /D_Build_By_LTL=1 /D_DISABLE_DEPRECATE_STATIC_CPPLIB=1 /D_STATIC_CPPLIB=1

cmd命令:

set "include=%VC_LTL_PATH%/VC/14.0.24210/include;%include%"
set "PATH=%VC_LTL_PATH%;%PATH%"
nmake NEW_COMPILER=1 CPU=AMD64 VC_LTL_PATH=%VC_LTL_PATH% BITS=x64

link命令:

link  -nologo -OPT:REF -OPT:ICF /LARGEADDRESSAWARE /FIXED -out:AMD64\7zcl.exe AMD64\StdAfx.obj  AMD64\Client7z.obj  AMD64\IntToString.obj  AMD64\NewHandler.obj  AMD64\MyString.obj  AMD64\StringConvert.obj  AMD64\StringToInt.obj  AMD64\MyVector.obj  AMD64\Wildcard.obj  AMD64\DLL.obj  AMD64\FileDir.obj  AMD64\FileFind.obj  AMD64\FileIO.obj  AMD64\FileName.obj  AMD64\PropVariant.obj  AMD64\PropVariantConv.obj    AMD64\FileStreams.obj                                                AMD64\resource.res C:\projects\7958a54b0e8e45d8acc0b6a8edd617d9\VC-LTL/x64/msvcrt_light.obj C:\projects\7958a54b0e8e45d8acc0b6a8edd617d9\VC-LTL/VC/14.0.24210/lib/x64/ltl.lib C:\projects\7958a54b0e8e45d8acc0b6a8edd617d9\VC-LTL/VC/14.0.24210/lib/x64/vc.lib ucrt.lib  oleaut32.lib ole32.lib user32.lib advapi32.lib shell32.lib

输出: https://ci.appveyor.com/project/myfreeer/7958a54b0e8e45d8acc0b6a8edd617d9/build/1.0.9 编译脚本: https://gist.github.com/myfreeer/7958a54b0e8e45d8acc0b6a8edd617d9

mingkuang-Chuyu commented 6 years ago

我都说要了 你需要修改include 以及lib环境变量……

另外 LIBS这里缩写就可以了。msvcrt_light.obj ltl.lib这样。

myfreeer commented 6 years ago

cmd命令:

set BITS=x64
set "PATH=%VC_LTL_PATH%;%VC_LTL_PATH%\VC\14.0.24210\include;%PATH%"
set "INCLUDE=%VC_LTL_PATH%\VC\14.0.24210\include;%INCLUDE%"
set "LIB=%VC_LTL_PATH%\%BITS%;%VC_LTL_PATH%\VC\14.0.24210\lib\%BITS%;%LIB%"
nmake NEW_COMPILER=1 CPU=AMD64 VC_LTL_PATH=%VC_LTL_PATH%

makefile参数:

LIBS = msvcrt_light.obj ltl.lib vc.lib ucrt.lib $(LIBS)' CPP/Build.mak
CFLAGS = $(CFLAGS) /D_NO_CRT_STDIO_INLINE=1 /D_Build_By_LTL=1 /D_DISABLE_DEPRECATE_STATIC_CPPLIB=1 /D_STATIC_CPPLIB=1

link命令:

link  -nologo -OPT:REF -OPT:ICF /LARGEADDRESSAWARE /FIXED -out:AMD64\7zcl.exe AMD64\StdAfx.obj  AMD64\Client7z.obj  AMD64\IntToString.obj  AMD64\NewHandler.obj  AMD64\MyString.obj  AMD64\StringConvert.obj  AMD64\StringToInt.obj  AMD64\MyVector.obj  AMD64\Wildcard.obj  AMD64\DLL.obj  AMD64\FileDir.obj  AMD64\FileFind.obj  AMD64\FileIO.obj  AMD64\FileName.obj  AMD64\PropVariant.obj  AMD64\PropVariantConv.obj    AMD64\FileStreams.obj                                                AMD64\resource.res msvcrt_light.obj ltl.lib vc.lib ucrt.lib  oleaut32.lib ole32.lib user32.lib advapi32.lib shell32.lib

输出:

ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) : error LNK2005: __imp_acosh already defined in ltl.lib(msvcrt_IAT.obj)
AMD64\7zcl.exe : fatal error LNK1169: one or more multiply defined symbols found
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x491'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.

编译脚本: https://gist.github.com/myfreeer/7958a54b0e8e45d8acc0b6a8edd617d9 完整输出: https://ci.appveyor.com/project/myfreeer/7958a54b0e8e45d8acc0b6a8edd617d9 似乎没有改善

myfreeer commented 6 years ago

问题解决,未增加ucrt/10.0.10240.0/lib至LIB; 感谢 @mingkuang-Chuyu 热心解答。

mingkuang-Chuyu commented 6 years ago

VC-LTL框架也已经改进,只需修改include以及lib就能正常工作。并且提供了 nmake_helper.cmd自动修改include以及lib环境变量。

还请试试nmake_helper.cmd,看看还有什么地方需要改进?

myfreeer commented 6 years ago

https://ci.appveyor.com/project/myfreeer/7z-build-nsis/build/18.03-3 https://github.com/myfreeer/7z-build-nsis/commit/c8c5cb0e2a2dd1a87428d1485ccc0e1f5d45ab81

C:\projects\7z-build-nsis\VC-LTL\config\Vista\LTL_config.h(21) : note: ??ltl????,??????VC-LTL??? _DISABLE_DEPRECATE_LTL_MESSAGE ????????
c:\projects\7z-build-nsis\vc-ltl\vc\14.0.24210\include\..\..\..\_msvcrt.h(36): fatal error C1189: #error:  "ucrt???(ucrt\X.XX.XXXXX.X)?????,??? Shared.props ?????????,???????????!"
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
Stop.
myfreeer commented 6 years ago

https://ci.appveyor.com/project/myfreeer/7z-build-nsis/build/18.03-4 使用传统方式仍然不成功

c:\projects\7z-build-nsis\vc-ltl\vc\14.0.24210\include\..\..\..\_msvcrt.h(25): fatal error C1083: Cannot open include file: 'LTL_config.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
Stop.
mingkuang-Chuyu commented 6 years ago

正常啊! x86 以及 amd64 均能正常编译。并且链接到了 msvcrt.dll

test.mk

`Test.exe :main.obj link.exe main.obj /OUT:Test.exe

main.obj:main.cpp cl.exe -EHsc -c /MD main.cpp clean: del .obj .exe `

main.cpp

`#include

int main() { printf("123456789");

return 0;

}`

mingkuang-Chuyu commented 6 years ago

编译x86流程

call vcvars32.bat call nmake_helper.cmd nmake /f test.mk

编译amd64流程

call vcvars64.bat call nmake_helper.cmd nmake /f test.mk

mingkuang-Chuyu commented 6 years ago

话说你是不是 还用了 %PATH% 环境变量做了什么事情?我看了你的代码唯一区别就是我没有处理PATH环境变量。

另外最新版VC-LTL需要多配置几个INCLUDE以及LIB路径,这导致你使用手动设置环境变量无法正常编译。

mingkuang-Chuyu commented 6 years ago

具体你看看 ltlvcrt.props 里面的 VC_LTL_Include以及 VC_LTL_Library就可以了

mingkuang-Chuyu commented 6 years ago

还有就是 nmake_helper 也不会设置 set BITS=XXX

mingkuang-Chuyu commented 6 years ago

我猜测应该是 7z工程自身问题,可能用了 PATH环境 或者 BITS 环境变量,做了什么事情。

augustheart commented 6 years ago

不知道是git惹的祸还是什么原因(应该是git的问题吧),nmake_helper.cmd的换行符从\r\n变成了\n,然后在命令行执行的时候产生了无数的完全无法理解的错误

myfreeer commented 6 years ago

@augustheart 启用了git的autocrlf选项,似乎没有改善。 @mingkuang-Chuyu BITS变量只是为了方便引入,与nmake无关。 连接器找不到msvcrt_vista.lib https://ci.appveyor.com/project/myfreeer/7z-build-nsis/build/18.03-5#L111

环境变量:

PATH=
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\MSBuild\14.0\bin\amd64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64;c:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\x64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\;C:\Perl\site\bin;C:\Perl\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\7-Zip;C:\Program Files\Microsoft\Web Platform Installer\;C:\Tools\GitVersion;C:\Tools\PsTools;C:\Program Files\Git LFS;C:\Program Files (x86)\Subversion\bin;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Tools\WebDriver;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI\wbin;C:\Ruby193\bin;C:\Tools\NUnit\bin;C:\Tools\xUnit;C:\Tools\MSpec;C:\Tools\Coverity\bin;C:\Program Files (x86)\CMake\bin;C:\go\bin;C:\Program Files\Java\jdk1.8.0\bin;C:\Python27;C:\Program Files\nodejs;C:\Program Files (x86)\iojs;C:\Program Files\iojs;C:\Users\appveyor\AppData\Roaming\npm;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\MSBuild\14.0\Bin;C:\Tools\NuGet;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files\Microsoft DNX\Dnvm;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Apache\Maven\bin;C:\Python27\Scripts;C:\Tools\NUnit3;C:\Program Files\Mercurial\;C:\Program Files\LLVM\bin;C:\Program Files\dotnet\;C:\Tools\curl\bin;C:\Program Files\Amazon\AWSCLI\;C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140;C:\Tools\vcpkg;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files\PowerShell\6.0.0\;C:\Program Files\erl9.2\bin;C:\Program Files (x86)\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\Yarn\bin\;C:\Program Files (x86)\NSIS;C:\Tools\Octopus;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code;C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager;C:\ProgramData\chocolatey\bin;C:\Users\appveyor\AppData\Roaming\npm;C:\Users\appveyor\AppData\Local\Yarn\bin;C:\Program Files\AppVeyor\BuildAgent\
----------------
INCLUDE=
C:\projects\7z-build-nsis\VC-LTL\config\Vista;C:\projects\7z-build-nsis\VC-LTL\VC\14.0.24210\include;C:\projects\7z-build-nsis\VC-LTL\VC\14.0.24210\atlmfc\include;C:\projects\7z-build-nsis\VC-LTL\ucrt\10.0.10240.0;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\winrt;
----------------
LIB=
C:\projects\7z-build-nsis\VC-LTL\X64;C:\projects\7z-build-nsis\VC-LTL\X64\Light ;C:\projects\7z-build-nsis\VC-LTL\VC\14.0.24210\lib\X64;C:\projects\7z-build-nsis\VC-LTL\ucrt\10.0.10240.0\lib\X64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x64;

https://ci.appveyor.com/project/myfreeer/7z-build-nsis/build/18.03-6#L37

augustheart commented 6 years ago

@myfreeer 换行符的问题似乎是@mingkuang-Chuyu 那边上传到git的过程中被修改的 找不到msvcrt_vista.lib的这个问题我也碰到了。我先用vcltl模式编译detours,然后再用普通模式编译detours后出了这个问题。问题是我看了半天的环境也没有找到问题,环境变量都是vs自身的。不知道是不是有哪个文件被修改了……

mingkuang-Chuyu commented 6 years ago

我本地测试了,使用nmake_helper.cmd 可以正常编译。

找不到msvcrt_vista.lib 那是因为你们手动设置lib时少设置了一个。

虽然使用 nmake_helper.cmd正常编译通过,但是有个问题……x86不生效。因为7-zip-build.bat同时编译了x64以及x86。而 nmake_helper.cmd 只会运行一次……

mingkuang-Chuyu commented 6 years ago

其实 最好用过子进程…… 让 7-zip-build.bat x86 与 x64分开编译……

mingkuang-Chuyu commented 6 years ago

让最新VC-LTL能正常编译,改动如下:

7-zip-build.bat

:Init_VC_LTL set VC_LTL_PATH=%CD%\VC-LTL

:Env_x64 call "%VS140COMNTOOLS%....\VC\vcvarsall.bat" amd64 set BITS=x64 set VC_LTL_Helper_Load=false call "%VC_LTL_PATH%\nmake_helper.cmd"

:Env_x86 call "%VS140COMNTOOLS%\vsvars32.bat" set BITS=x86 set VC_LTL_Helper_Load=false call "%VC_LTL_PATH%\nmake_helper.cmd"

7-zip-patch.sh

20行后面内容全部删掉

CPP\Build.mak

删除10、11二行

myfreeer commented 6 years ago

@mingkuang-Chuyu 脚本自动识别了10.0.14393.0版本ucrt https://ci.appveyor.com/project/myfreeer/7z-build-nsis/build/18.03-8#L130

mingkuang-Chuyu commented 6 years ago

识别为14393不是很正确么?你的环境本来就是14393 SDK。

另外这个日志报错是触发了VCLTL安全检查,大概有二个原因。

mingkuang-Chuyu commented 6 years ago

还有一个问题是环境变量已经混乱了。建议不要在一个进程里同时编译32跟64。可以新启动个进程单独编译32以及64位

mingkuang-Chuyu commented 6 years ago

突然发现VCLTL没有14393,,,,😂

mingkuang-Chuyu commented 6 years ago

UCRT问题,我在本地已经修正了。另外还发现x86编译不通过的问题是因为7z 里面有个CPP没有引用任何CRT的头文件,导致了找不到符号问题。这个我需要在msvcrt.lib里面添加一个lib关联才行……

等添加好了 再回复

最后,本地手动在link里添加 缺失的lib后 x86也已经编译通过了。

mingkuang-Chuyu commented 6 years ago

VC-LTL已经调整完毕,本地7z-build-nsis-master(x86以及x64)都能编译了。

7z-build-nsis-master如下调整:

7-zip-build.bat

:Init_VC_LTL set VC_LTL_PATH=%CD%\VC-LTL

:Env_x64 set INCLUDE= set LIB= set VC_LTL_Helper_Load= set Platform=

call "%VS140COMNTOOLS%....\VC\vcvarsall.bat" amd64 set BITS=x64 call "%VC_LTL_PATH%\nmake_helper.cmd" ... :Env_x86 set INCLUDE= set LIB= set VC_LTL_Helper_Load= set Platform=

call "%VS140COMNTOOLS%\vsvars32.bat" set BITS=x86 call "%VC_LTL_PATH%\nmake_helper.cmd"

7-zip-patch.sh

20行后的内容全部删除,新版本VC-LTL会使用OBJ引入lib,如需手工给link指定lib。

mingkuang-Chuyu commented 6 years ago

调用“ set INCLUDE= set LIB=” 这是为了清空环境变量,这样nmake_helper.cmd就能按预期工作了。

myfreeer commented 6 years ago

编译成功,感谢 @mingkuang-Chuyu 支持。

另外,请更改这一行为英文或禁用此处C4566警告,现在CI的控制台输出被这个警告刷屏了。 https://github.com/Chuyu-Team/VC-LTL/blob/39d232b5f932614c837a62ec5e8fb6689e0a4e97/ucrt/10.0.10240.0/stdlib.h#L60

warning C4566: character represented by universal-character-name '\u529F' cannot be represented in the current code page (1252)
mingkuang-Chuyu commented 6 years ago

stdlib.h编码是UTF16啊?

另外 最后我顺道说下,nmake_helper.cmd 已经改名为 VC-LTL helper for nmake.cmd

统一下命名。