gpt4 book ai didi

gcc - 想要 ${workspaceFolder} 在 Windows 上发出正斜杠?

转载 作者:行者123 更新时间:2023-12-04 20:20:54 25 4
gpt4 key购买 nike

我正在 tasks.json 中配置 VSCode 任务,我需要将 ${workspaceFolder} 传递给“make”命令,但是它需要是正斜杠,而不是反斜杠。

{
"version": "2.0.0",
"echoCommand": true,
"tasks": [
{
"label": "build",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": [
"APPDIR=\"${workspaceFolder}\""
]
. . .

有没有办法修改 ${workspaceFolder} 以在 Windows 上发出正斜杠?
或者,是否有宏这样的东西,我可以在其中搜索和替换?

编辑:
我的根本问题是 GNU make 似乎转义了从 APPDIR 传入的反斜杠,例如:C:\somedirectory\someotherdirectory\athirddirectory。
我想如果我可以切换到正斜杠,它会解决这个问题。
我无法控制,也无法编辑 make 文件。

谢谢

-约翰

最佳答案

尽管没有明确说明,但听起来您使用的是 Windows 并使用 Cygwin make。

基本上使用 Johan 的建议,这里是一个完整的 tasks.json使用 cygpath -m将正斜杠传递给 make :

{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "d:/cygwin64/bin/sh",
"args": [
"-c",
"make APPDIR=$(cygpath -m '${workspaceFolder}')"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

这是一个样本 Makefile被称为:
$(info APPDIR is "$(APPDIR)")

helloworld.exe: helloworld.cpp
g++ -g -Wall -std=c++11 -o $@ helloworld.cpp

当我按 Ctrl+Shift+B 调用此任务时,我在终端窗口中看到:

> Executing task in folder cpphello: d:/cygwin64/bin/sh -c "make APPDIR=$(cygpath -m 'D:\wrk\learn\vscode\cpphello')" <

APPDIR is "D:/wrk/learn/vscode/cpphello"
make: 'helloworld.exe' is up to date.

Terminal will be reused by tasks, press any key to close it.

这使用 -m (混合)切换到 cygpath获得看起来像 Windows 路径但使用正斜杠的内容。 cygpath有其他选择;见 cygpath --help .

这里有两个微妙之处:
  • 我指定了 sh 的路径明确地。那是因为我也
    git for Windows在我的 $PATH 上,
    它出现在我的 Cygwin 路径之前,以便 vscode 将使用它git .但是 git for Windows 也有 sh.exe ,如果那个
    在这里使用,make因 Cygwin DLL 错误而崩溃。
  • 我不得不将默认的 VSCode shell 更改为 cmd.exe , 然而
    默认为 powershell.exe . PowerShell 的问题
    这是 VSCode 在将参数传递给时使用单引号
    它,而我的解决方案要求 VSCode 使用双引号,
    它对 cmd.exe 做了什么.要更改 shell ,请使用
    面板中的“终端:选择默认 shell ”命令
    (Ctrl+Shift+P)。

  • 最后,我要指出,如果在您的情况下,您可以创建一个中间 bash,那么所有这些废话都可以避免。 shell 脚本而不是调用 make直接地。 tasks.json语言不是很强大,而且 VSCode 知道如何在 Windows 上调用的古怪 shell(即 cmd.exepowershell.exe)增加了额外的复杂性和脆弱性。

    关于gcc - 想要 ${workspaceFolder} 在 Windows 上发出正斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250021/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com