0

我是 Visual Studio Code 的新手,我刚刚开始学习使用它来编译我的 C++ 项目的基础知识。我遇到了一个问题,当在 Vs 代码中“打开”一个文件夹,然后在其中有一个包含我的“main.cpp”文件的内部文件夹时,编译时会在内部文件夹之外创建“main.exe”,我不希望这种情况发生,并且希望属于该 main.cpp 的可执行文件位于内部文件夹中,以便两者都存储在同一个文件夹中,对我来说,这比在预期文件夹之外更有意义。我真的不知道在哪里可以改变这种行为。这是我的意思的一个例子: 显示 main.exe 是在内部文件夹之外创建的屏幕截图

更新:将很快发布我自己的问题的答案更新2:我为任何遇到此问题/问题的人详细回答了

4

4 回答 4

2

我想出了一个简单的解决方案。您只需隐藏扩展名为.exe. 许多人对您的回答感到困惑,因此您必须遵循一些步骤。

第 1 步:转到文件

第2步:点击首选项->然后设置

第三步:然后搜索“排除文件

第 4 步:选择添加模式

第5步:“**/*.exe”添加这个->然后单击确定

第 6 步:关闭 Visual Studio 代码,然后再次打开它

于 2021-06-17T15:23:54.430 回答
2

过程非常简单。以下过程显示了如何在您提供的/特定文件夹中创建/制作可执行文件/.exe 文件

  1. 转到命令面板...Ctrl + Shift + P
  2. Backspace删除 > 符号
  3. 搜索tasks.json文件,然后按 Enter

-。在tasks.json文件中,你要查找以下代码(注意:此代码在文件中可以显示2或3次。为每个人执行操作)

    "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
    ],
  1. 用您的新路径替换代码“${fileDirname}\${fileBasenameNoExtension}.exe”,例如,我的工作区文件夹中有一个名为“myNewFolder”的新文件夹,我将其替换为

"${fileDirname}\myNewFolder\${fileBasenameNoExtension}.exe"

  1. 点击Ctrl + s保存更改

现在,以下过程显示如何运行/启动您分配的文件夹/位置中提供的可执行文件/.exe 文件

    1. 转到命令面板...Ctrl + Shift + P
  1. Backspace删除 > 符号

  2. 搜索launch.json文件,然后按 Enter

  3. 寻找名为“程序”的键 -。如下

    "程序": "${fileDirname}\${fileBasenameNoExtension}.exe",

  4. 更改文件路径。就我而言,我将其更改如下

    "程序": "${fileDirname}\myNewFolder\$fileBasenameNoExtension}.exe",

  5. 保存更改

于 2022-02-02T13:29:24.840 回答
0

如果您使用的是Code Runner扩展,那么:

  1. 按 Ctrl + Shift + P 步骤1

  2. 删除“>”符号(按退格键删除)

  3. 在 AppData 目录中搜索“settings.json” step3

  4. 然后您可以查看“ cpp ”行中的“code-runner.executorMap”。您可以键入该参数

    "code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", // <-- This
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        //etc.
    },
    "code-runner.runInTerminal": true,

笔记 :

实际上,第 4 步中的参数是默认设置。因此,如果这是您第一次使用它,您不必编辑它。

但是如果您想自定义参数(在大多数情况下用于更改输出目录),那就是您将被使用的地方。

例如,在我的情况下,我想将 .cpp 和 .exe 文件分离到“src”和“bin”文件夹中,所以:

"cpp": "cd $dir && g++ $fileName -o ..\\bin\\$fileNameWithoutExt && ..\\bin\\$fileNameWithoutExt",

结果 :

PS C:\Coding\C++\src> cd "c:\Coding\C++\src\" ; if ($?) { g++ string.cpp -o ..\bin\string } ; if ($?) { ..\bin\string }
Hi

希望它有效

于 2021-07-27T09:33:25.183 回答
-1

请阅读它是对可能影响工作流程的潜在错误的完整且非常详细的解释,VISUAL STUDIO 尚未解决此问题!我会尽快报告

所以我一直在用这种毫无意义的问题扯掉我的头发,但最后我得出的结论是 Visual Studio 有一个非常隐藏的错误(因为我找不到任何有类似问题的人/问题),或非常不明确的文档。

最初的问题是,如果我有(我将在下面给出一个更清晰的示例)在 Visual Studio Code 中打开一个外部文件夹,其中有一个包含文件的内部文件夹main.cpp,Visual Studio Code 不会让步并将main.exe文件放在外部文件夹而不是内部文件夹,您可以想象如果我在外部文件夹中有许多其他内部文件夹并且所有的 exe 文件都称为main.exe.

让我举一个例子来说明我的意思:

假设我有以下路径(main.cpp 里面已经有代码) -outer-folder\inner-folder\main.cpp 现在我在 Visual Studio Code 中打开外部文件夹。以下是第一次在 Visual Studio Code 中打开时的样子,没有构建或编译任何东西在 Visual Studio Code 中第一次 打开外部文件夹之后 如果我现在尝试Ctrl + F5这个,使用选项由...的 Visual Studio Code 给出C++ (GDB/LLDB) ---> g++.exe - build and debug active file,屏幕上将显示以下内容: Ctrl + F5 之后以及我的解释中所述的以下选项 在这种情况下,我在我的D:驱动器中,并且在我的解释开头所述的示例路径中. 错误是说 main.exe 不存在于内部文件夹中,这是完全正确的,它存在于内部文件夹中outer-folder. 为什么?因为我们需要tasks.json通过让我打开文件来编辑(Visual Studio Code 已经误导的信息launch.json,尽管它们在某种程度上是正确的,因为它说launch.json找不到要启动的文件所以也许你的路径错误在那里,为 ) 提供另一个选项会很有帮助,该选项tasks.json位于由 Visual Studio Code 自动创建的文件夹中,.vscode以及launch.json.

当在tasks.json文件中时,有一个变量(如果你可以调用它,虽然我认为它有一个不同的名称),称为args...里面 ([]) 是 Visual Studio Code 自动传递给终端来编译和构建你的 C++ 代码。传入的所有参数的详细信息对于这个问题并不重要,但是第二${file}https://code.visualstudio.com/docs/editor/variables-reference( one ( -o) 只是告诉它像第四个参数指定的那样输出它。第四个是这里非常重要的一个,如果我们回到引用 Visual Studio Code 提供的变量的链接,${fileDirname}“应该”实际上与说的意思相同outer-folder\inner-folder...正确的?不!这是错误的,它实际上是在说outer-folder,这就是为什么main.exe在 之外构建的原因inner-folder,所以我们已经从文档中得到了某种类型的错误信息或某种类型的错误的危险信号。

现在,作为 Visual Studio Code在gccVSC (,现在还没有拿到钥匙,我需要解释为什么这不起作用,但首先让我们尝试一下......按,这将构建你的程序但不运行它(如果你遵循这个确保构建正确的文件而不是尝试构建自己(lol),现在当我们这样做时,我们可以看到另一个文件将被构建并且在正确的位置输出输出在正确的位置。好的,现在有关配置的文档https://code.visualstudio.com/docs/cpp/config-mingwtasks.jsonargs${fileDirname}\\inner-folder\\${fileBasenameNoExtension}.exeCtrl + F5Ctrl + Shift + Btasks.jsonmain.exemingw在 Visual Studio Code 中建议比现在您可以通过转到终端并从那里运行它来运行您的文件(无需解释如何执行此操作)。如果你想调试它,那有什么乐趣呢?在这里,我们将找到另一个潜在的错误或与此相关的非常糟糕的文档。如果我们launch.json现在打开我们的(这是您按下时运行的文件Ctrl + F5)然后我们查看变量(再次,我几乎 100% 确定这不是它的名称,但我不知道该怎么称呼它此时)program:在这里您可以告诉launch.json您要运行的文件的位置在哪里,在我们的例子中,它是我们main.exe应该位于的位置。由于我们已经解决了问题,tasks.json现在可以使用Ctrl + Shift + B每次我们想在正确的位置重建时,我们现在可以运行Ctrl + F5,对吗?不!这就是下一个错误/错误文档出现的地方!如果您查看文件的最底部,有一个this 是存储在我们后面"preLaunchTask:"的值的名称,它必须完全匹配,以便知道调用时要运行哪个任务。问题是,即使它们已经自动匹配(因为默认情况下它们的名称相同),它仍然不起作用,Visual Studio Code 出于某种原因说,你知道你的任务是什么。我们将覆盖并使用默认的!即使您的默认名称与默认名称匹配,它也不会运行您的"label":tasks.jsonlaunch.jsonlaunch.jsontasks.json它用默认的覆盖它(不是 100% 确定它做了什么,但这是我最好的猜测,因为它 100% 不运行我们的),现在有趣的是,当我们将 the"preLaunchTask":和 the都更改"label":为相同的除了默认字符之外的任何东西(甚至在任何地方再添加一个字符,但要确保两者都匹配),当我们这样做Ctrl + F5时,现在运行我们的tasks.json! 然而......所有这一切都是徒劳的,因为在一天结束时我们不得不硬编码,tasks.json我们必须为我们想要存储在其他内部文件夹中的每个文件执行此操作!inner-folder您可以通过仅打开该文件夹 ( ) 作为主要文件夹而不是 ,来解决此问题(正如我后来发现的那样)outer-folder,并且修复了繁荣问题,但是您无法看到您本来可以看到的整个项目,有您的outer-folder被打开。

于 2020-10-28T22:49:50.637 回答