xmake-io / xmake

🔥 A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
9.89k stars 775 forks source link

更新了最新的 dev 分支,然後在使用 rule 的過程中,發現 `config.set("vs_sdkver", "10.0.10586.0")` 不起作用 #279

Closed waruqi closed 5 years ago

waruqi commented 5 years ago
-- FILE: common.lua
rule("common")
    on_load(function (target)
        import("core.project.config")
        if is_plat("windows") then
            -- win10 sdk version
            config.set("vs_sdkver", "10.0.10586.0")
        end
    end)

-- FILE: xmake.lua
includes("common.lua")
target("GTestApp")
    add_rules("common")
    ...
    ...

順便回報一下試驗結果,在xmake描述域底下,set_config 設置的值可以讓 vs project 產生過程中正確讀取,目前有問題的是設置在 rule 作用域的時候。

Originally posted by @orzuk-lmj in https://github.com/tboox/xmake/issues/260#issuecomment-445171246

waruqi commented 5 years ago

xmake f的config.check()配置检测阶段(也就是platform/check的时候),会根据vs_sdkver的设置加载对应的vs环境,并且缓存对应的环境变量,而rule/target的on_load阶段比较靠后,是在检测之后才被执行到的,所以这个时候去修改vs_sdkver就没法重新加载新的vs环境了。

然而rule/target的on_load阶段没法再靠前了,必须要所有config检测完后,才能执行,确保这个时候所有的config都已经完全ok

而上层描述域的set_config主要用于设置一些默认配置,所以在configs检测前就会设置进去。

如果要在rule/target on_load等比较靠后的位置,再去修改vs_sdkver以及缓存的vs环境,除了修改vs_sdkver的配置,还需要修改重新设置config.set("__vcvarsall", vcvarsall),这块的实现可以参考下:windows/check.lua

这样做就比较繁琐了,暂时不推荐用户这么去设置修改,这块暂时还没有好的版本在rule中支持修改vs_sdkver,这个我得再想想。

waruqi commented 5 years ago

其实大部分配置通过config.set就可以切换的,但是由于vs_sdkver和__vcvarsall是同步配置的,所以只改一个 没法生效

目前想到的解决办法是 改进下find_vstudio 一次性检测出所有的 vs_sdkver 和 vs_toolset 版本,以及对应的vcvarsall值,这样在 rule on_load的时候,即使只修改vs_sdkver配置,在platform/windows/environment里面加载vs环境的时候,就可以根据 当前的 vs_sdkver快速切换生效了

不过这样find_vstudio就会有不少冗余检测影响效率,另外一种可行并且更加有效的办法是: 在windows/environment.lua加载实际vs环境的时候,判断下 config.get vs_sdkver 的值跟 从__vcvarsall里面取出来的是否一致,不一致的话重新调用find_vstudio去加载实际的vcvarsall并更新配置,通过这种延迟更新检测环境的方式应该会更好些,回头我改进下试试

waruqi commented 5 years ago

我改进了下,你试试 https://github.com/tboox/xmake/releases/download/v2.2.3/xmake-v2.2.4-dev.exe

orzuk-lmj commented 5 years ago

抓了最新的dev,回報嘗試的結果:

-- FILE: xmake.lua includes("common.lua") target("GTestApp") add_rules("common") set_kind("binary") add_files("**.cpp")

waruqi commented 5 years ago

我这边也装了个两个win10 sdk version用于测试切换,通过你给的xmake.lua demo配置,进行编译,我这测试是ok的,直接编译还是生成vcproj都ok,可以正常自动切换到新指定的sdk version上去

如果你这不行的话,可以在下面这块代码上,加点print,调下:

https://github.com/tboox/xmake/blob/ceef023dd98a60b118bb4f089376f943902177fa/xmake/platforms/windows/environment.lua#L52-L62

orzuk-lmj commented 5 years ago

使用最新的dev分支ceef023,使用的腳本上面給了,編譯過程執行的指令是:

xmake config --verbose ^
    --plat=windows ^
    --vs=vs2015 ^
    -a x64 ^
    -m debug ^
    -o ../vs2015-x64-debug/build && ^
xmake project --verbose ^
    -k vs2015 ^
    -a x64 ^
    -m debug ^
    ../vs2015-x64-debug/build && ^
xmake

然後,我在environment.lua 裡面 local vstudio = find_vstudio( ......... ) 的下一行 table.dump(vstudio) ,很意外的是乍看起來印出的設定都正確。

不斷的印出類似的
***** LINE31 _enter "path"
    LINE51 vs = vs2015
           vs_sdkver = 10.0.10586.0
           vs_toolset = nil
    LINE55 vstudio has value

***** LINE31 _enter "lib"
    LINE51 vs = vs2015
           vs_sdkver = 10.0.10586.0
           vs_toolset = nil
    LINE55 vstudio has value

***** LINE31 _enter "include"
    LINE51 vs = vs2015
           vs_sdkver = 10.0.10586.0
           vs_toolset = nil
    LINE55 vstudio has value

***** LINE31 _enter "libpath"
    LINE51 vs = vs2015
           vs_sdkver = 10.0.10586.0
           vs_toolset = nil
    LINE55 vstudio has value

多次 vstudio 印出的內容都是:

{
    2012 =
    {
        vcvarsall_bat = C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\..\..\VC\vcvarsall.bat
    ,   version = 11.0
    ,   vcvarsall =
        {
            x86 =
            {
                path = D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            }
        ,   x64 =
            {
                path = D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            }
        }
    }
,   2013 =
    {
        vcvarsall_bat = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
    ,   version = 12.0
    ,   vcvarsall =
        {
            x86 =
            {
                path = D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            }
        ,   x64 =
            {
                path = D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            }
        }
    }
,   2015 =
    {
        vcvarsall_bat = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
    ,   version = 14.0
    ,   vcvarsall =
        {
            x86 =
            {
                libpath = C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;
            ,   UniversalCRTSdkDir = C:\Program Files (x86)\Windows Kits\10\
            ,   UCRTVersion = 10.0.10240.0
            ,   VSInstallDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\
            ,   DevEnvdir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\
            ,   path = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\MSBuild\14.0\bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;C:\Program Files (x86)\Microsoft
Visual Studio 14.0\VC\VCPackages;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\;D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            ,   WindowsLibPath = C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References
            ,   WindowsSDKVersion = 10.0.10240.0
            ,   WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10\
            ,   lib = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\um\x86;
            ,   include = 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.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt;
            ,   VCInstallDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\
            }
        ,   x64 =
            {
                libpath = C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;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\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;
            ,   UniversalCRTSdkDir = C:\Program Files (x86)\Windows Kits\10\
            ,   UCRTVersion = 10.0.10240.0
            ,   VSInstallDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\
            ,   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\;D:\ApexWorkspace\libGDK\Tools\xmake\bin\winenv\bin;D:\ApexWorkspace\libGDK\Demos\GTestApp\_build\vs2015-x64-debug\.xmake\prefix\windows\x64\release\bin;C:\Users\localuser\AppData\Roaming\.xmake\prefix\windows\x64\release\bin;D:\ApexWorkspace\libGDK\Tools\xmake\bin;C:\Program Files (x86)\SCE\ORBIS SDKs\5.500\host_tools\bin;C:\Program Files (x86)\SCE\Common\SceVSI-VS14\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Target Manager Server\bin;C:\Program Files (x86)\SCE\ORBIS\Tools\Publishing Tools\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git LFS;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin;C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\software\xmake;C:\Program Files\CMake\bin;C:\mingw-builds\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32\bin;D:\NVPACK\jdk1.8.0_77\bin;D:\NVPACK\apache-ant-1.8.2\bin;D:\NVPACK\gradle-4.1-rc-2\bin;D:\NVPACK\android-ndk-r15c;D:\NVPACK\android-sdk-windows\extras\android\support;D:\NVPACK\android-sdk-windows\build-tools;D:\NVPACK\android-sdk-windows\platform-tools;D:\NVPACK\android-sdk-windows\tools;C:\Users\localuser\AppData\Local\Microsoft\WindowsApps;C:\Users\localuser\AppData\Local\Programs\Microsoft VS Code\bin;C:\software\LLVM\clang_7.0.0\bin;C:\Users\localuser\AppData\Roaming\npm;C:\software\LuaTools;C:\Program Files (x86)\Common Files\Acronis\TibMounter64
            ,   WindowsLibPath = C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References
            ,   WindowsSDKVersion = 10.0.10240.0
            ,   WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10\
            ,   lib = 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.10240.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.10240.0\um\x64;
            ,   include = 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.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt;
            ,   VCInstallDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\
            }
        }
    }
}
waruqi commented 5 years ago

我看你指定config.set修改成的是10.0.10586.0,但是重新检测find_vstudio vs2015返回的是: WindowsSDKVersion = 10.0.10240.0 很奇怪。。看着就像是没找对新设置的sdkver的vs环境

checking for the link.exe ... no checking for the linker (ld: link.exe) ... no

这些检测失败,主要是加载新的的vcvarsall中对应的path, lib到环境变量后,没有找到相关cl等编译工具而已,所以只要确定加载的10.0.10586.0的path已经设置生效,并且这个path下 确实有相关 cl.exe link.exe,应该是可以找到的

waruqi commented 5 years ago

意外的是乍看起來印出的設定都正確。

不斷的印出類似的 ***** LINE31 _enter "path" vs = vs2015 vs_sdkver = 10.0.10586.0 LINE55 vstudio has value

这两个本身就是已经被config.set修改了,肯定打印出来的是ok的,关键是得看通过config.set设置完,重新find_vstudio后返回的vcvarsall里面WindowsSDKVersion的值,是否确实是新设置的sdkver

orzuk-lmj commented 5 years ago

另外有個疑惑就是,因為 vcvarsall = (vstudio[vs] or {}).vcvarsall or {} 會使用 vs 變量從表中取值,但是在使用 --verbose 的指令時有觀察到,configure 顯示的 vs 有兩種值,分別為vs20152015 ,不曉得是否有影響?

configure
{
    winxp = false
    ccache = true
    mode = debug
    plat = windows
    vs = 2015                       <--------------------------
    kind = static
    buildir = ..\_build\vs2015-x64-debug
    vs_sdkver = 10.0.10586.0
    host = windows
    arch = x64
}

configure
{
    winxp = false
    ccache = true
    mode = debug
    plat = windows
    host = windows
    kind = static
    buildir = ..\_build\vs2015-x64-debug
    vs = vs2015                       <--------------------------
    vs_sdkver = 10.0.10240.0
    arch = x64
}
orzuk-lmj commented 5 years ago
orzuk-lmj commented 5 years ago

大致上找到原因了,我在xmake config 指令給 --vs=vs2015 ,只要改成 --vs=2015 就正常了,指令的使用有所誤解,把project --kind=vs2015 和--vs=2015想當然地混淆在一起了。哈哈...用了錯誤的參數至今才發現。

建議修改 xmake config 指令說明,至少需要個明確版本範例。或是參數錯誤檢查機制。

--vs=VS                            The Microsoft Visual Studio (default: auto)

有錯誤的編譯過程執行的指令是:

xmake config --verbose ^
    --plat=windows ^
    --vs=vs2015 ^
    -a x64 ^
    -m debug ^
    -o ../vs2015-x64-debug/build && ^
xmake project --verbose ^
    -k vs2015 ^
    -a x64 ^
    -m debug ^
    ../vs2015-x64-debug/build && ^
xmake
waruqi commented 5 years ago

ok, 我在xmake f -h里面对--vs,加上传参提示了。。可以更新下dev分支。