xmake-io / xmake-vscode

🍩 A XMake integration in Visual Studio Code
https://xmake.io
Apache License 2.0
229 stars 54 forks source link

Can't create new project correctly in Windows #107

Closed v1nh1shungry closed 2 years ago

v1nh1shungry commented 2 years ago

Xmake 版本

2.6.5

操作系统版本和架构

Windows 10 version 21H2

描述问题

Windows环境(MSYS2 MinGW)中在空目录中执行XMake: CreateProject命令,会导致创建的项目异常损坏,以下是在空目录D:\msys64\home\lenovo\repos\cpp\tutor中由XMake: CreateProject命令创建的项目结构:

.
├── build
│   └── compile_commands.json    
└── msys64homelenovoreposcpptutor
    └── msys64homelenovoreposcpptutor
        ├── .gitignore
        ├── main.cpp
        └── xmake.lua

期待的结果

能够像在Linux环境中执行相同操作后创建健康的项目,以下为在Linux环境中执行相同操作创建的项目结构:

.
├── build
│   └── compile_commands.json
├── .gitignore
├── src
│   └── main.cpp
├── .xmake
│   └── linux
│       └── x86_64
│           └── cache
│               ├── detect
│               └── toolchain
└── xmake.lua

工程配置

附加信息和错误日志

终端输出的信息:

> Executing task: xmake create -t console -l c++ -P d:\msys64\home\lenovo\repos\cpp\tutor <

create d:msys64homelenovoreposcpptutor ...
error: cannot open file: xmake.lua, No such file or directory
终端进程“D:\msys64\usr\bin\bash.exe '--login', '-i', '-c', 'xmake create -t console -l c++ -P d:\msys64\home\lenovo\repos\cpp\tutor'”已终止,退出代码: 127。

应该是因为xmake的-P参数并不支持Windows格式的绝对路径,也不支持反下划线,然而插件应该是直接使用了VS Code提供的workspace系列变量,而这些变量是Windows路径格式的。我粗看了xmake的文档没找到关于xmake create-P参数的说明,不清楚这应该是谁的责任,所以先在这个项目下提出issue了。

waruqi commented 2 years ago

msys2 的 bash.exe 问题,自动转义了 \ ,得加 "" 去wrap 下,"d:\msys64\home\lenovo\repos\cpp\tutor" 。。或者用反斜杠,或者用 \\

你可以切到 cmd 作为 bash ,就不会有问题,或者来个 pr 改下插件,对路径加个 ""

v1nh1shungry commented 2 years ago

感谢回复!