xmake-io / xmake

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

vcpkg包管理无法使用 #401

Closed Ultraman95 closed 5 years ago

Ultraman95 commented 5 years ago

add_requires("vcpkg::simdjson") -- add target target("myTest")

-- set kind
set_kind("binary")

add_headerfiles("src/*.h")
-- add files
add_files("src/*.cpp")

add_packages("vcpkg::simdjson")

xmake -y checking for the Microsoft Visual Studio (x86) version ... 2017 => install vcpkg::simdjson .. failed error: install failed!

Ultraman95 commented 5 years ago

xmake v2.2.5新特性详解 按照这篇文章提示操作,无法安装自动安装simdjson

手动使用vcpkg 安装没有问题

waruqi commented 5 years ago

请加 -v -D 给我看下详细错误信息

$ xmake f -c -v -D
$ xmake -v -D
Ultraman95 commented 5 years ago

xmake f -a x86 -v -D checking for the vswhere.exe ... C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe checking for the cl.exe ... ok checking for the Microsoft Visual Studio (x86) version ... 2017 checking for the unzip ... ok checking for the git ... ok checking for the gzip ... ok checking for the tar ... ok checking for the ping ... ok pinging for the host(gitee.com) ... 24 ms pinging for the host(gitlab.com) ... 342 ms pinging for the host(github.com) ... 65535 ms finding simdjson from vcpkg .. checking for the vcpkg directory ... E:\Program Files\vcpkg checking for the vcpkg::simdjson ... no note: try installing these packages (pass -y to skip confirm)? in vcpkg: -> vcpkg::simdjson please input: y (y/n) y installing simdjson from vcpkg .. error: C:\Program Files (x86)\xmake/core/base/os.lua:705: cannot install package(simdjson) for arch(x86)! stack traceback: [C]: in function 'error' [C:\Program Files (x86)\xmake/core/base/os.lua:705]: in function 'raise' [...\xmake\modules\package\manager\vcpkg\install_package.lua:57]: in function '_install_package' [... (x86)\xmake\modules\package\manager\install_package.lua:113]: [C:\Program Files (x86)\xmake/core/package/package.lua:948]: in function 'script' [...6)\xmake\actions\require\impl\action..\utils\filter.lua:123]: in function 'call' [...iles (x86)\xmake\actions\require\impl\action\install.lua:159]:

=> install vcpkg::simdjson .. failed error: C:\Program Files (x86)\xmake/core/base/os.lua:705: C:\Program Files (x86)\xmake/core/base/os.lua:705: install failed!stack traceback:

    [C]: in function 'error'
    C:\Program Files (x86)\xmake/core/base/os.lua:705: in function 'raise'
    ...iles (x86)\xmake\actions\require\impl\action\install.lua:257: in function 'catch'
    C:\Program Files (x86)\xmake\core\sandbox\modules\try.lua:109: in function 'try'
    ...iles (x86)\xmake\actions\require\impl\action\install.lua:143: in function 'install'
    ...ogram Files (x86)\xmake\actions\require\impl\package.lua:595: in function <...ogram Files (x86)\xmake\actions\require\impl\package.lua:522>

E:\Experiment\C++\test

Ultraman95 commented 5 years ago

xmake f -a x64 -v -D

这个好像就可以

Ultraman95 commented 5 years ago

好像关于x86 相关的vcpkg都无法正确使用了,xmake2.2.5

waruqi commented 5 years ago

你手动通过vcpkg安装x86可以么?

waruqi commented 5 years ago

你先直接手动执行下vcpkg命令装下x86试试,如果可以装上,可以帮忙调下 https://github.com/xmake-io/xmake/blob/master/xmake/modules/package/manager/vcpkg/install_package.lua

等回头有时间了,我再看看

Ultraman95 commented 5 years ago

手动用vcpkg安装没有问题

Ultraman95 commented 5 years ago

如何调试那个lua脚本

Ultraman95 commented 5 years ago

能提供一个vscode的调试方式吗?这样就好了

waruqi commented 5 years ago

不需要vscode,你只要到你的xmake安装目录下,用编辑器编辑 xmake/modules/package/manager/vcpkg/install_package.lua 脚本,里面加点 print 调调就行了,就只要调试这一个脚本文件,没必要上调试器。。

你可以用vscode打开编辑。

Ultraman95 commented 5 years ago

vscode好像没办法单独调试这个脚本,不过用xmake l这个命令可以

waruqi commented 5 years ago

恩 你可以直接执行:xmake l package.manager.install_package vcpkg::simdjson 去安装测试,也可以在工程里面执行xmake编译的时候,去执行到此块的逻辑。

Ultraman95 commented 5 years ago
if opt.arch ~= os.arch() then
    raise("cannot install package(%s) for arch(%s)!", name, opt.arch)
end

这句有问题,我的机器是x64的,但是我要安装x86的库,所以这句判断是否可以去掉

还有就是框架中是不是其他地方也有类似这样的判断

Ultraman95 commented 5 years ago

如果可以用vscode调试就更好了,否则只能通过print来调试

Ultraman95 commented 5 years ago

还有个问题 我下载xmake的源码,然后在core目录下执行xmake,就可以把xmake编译出来了 这个软件的原理是不是使用这个编译出来的xmake去调用xmake目录下的lua脚本?

以后能在core目录下面提供一份可以生成vs2017工程的脚本,最好生成的vs工程能包含所有用到的.h和.c文件,这样如果在windows上有问题,我们自己也可以调试,排查问题了

waruqi commented 5 years ago

还有个问题 我下载xmake的源码,然后在core目录下执行xmake,就可以把xmake编译出来了 这个软件的原理是不是使用这个编译出来的xmake去调用xmake目录下的lua脚本?

是的,调用安装目录下对应的lua脚本

以后能在core目录下面提供一份可以生成vs2017工程的脚本,最好生成的vs工程能包含所有用到的.h和.c文件,这样如果在windows上有问题,我们自己也可以调试,排查问题了

首先,调试这个vcpkg的install_package.lua安装逻辑,不涉及c代码,所以你不需要自己下载源码重编译xmake可执行文件,也没必要生成vs工程去调试xmake的可执行文件。

只需要编辑xmake安装目录下install_package.lua的脚本文件,加print调试即可,不涉及也没必要涉及各种ide环境。

除非xmake在执行过程遇到崩溃等问题,96%的情况下你都不需要进行c源码编译和调试。

其次,如果你非要用vs调试xmake可执行文件,xmake是支持vs2017工程生成的,详细请看相关文档:https://xmake.io/#/zh/plugins?id=%E7%94%9F%E6%88%90visualstudio%E5%B7%A5%E7%A8%8B

Ultraman95 commented 5 years ago

是的,绝大数情况xmake执行程序不会有问题的 我下载xmake源码,不是为了解决这个问题,只是想看看这个工具的逻辑是怎样的

Ultraman95 commented 5 years ago

那对于这个错误,该怎么办呢

waruqi commented 5 years ago

如果急的话,你先自己调下install_package.lua吧,可以提个pr上来。

我暂时没装vcpkg,不急的话,等之后我有时间了再看看。

waruqi commented 5 years ago

https://github.com/xmake-io/xmake/blob/85cb688e30f996c5ac1036ec99b6c7c1a45cb035/xmake/modules/package/manager/vcpkg/install_package.lua#L52-L54

之前有做arch匹配检测,dev上我去掉了,你再试试