【问题标题】:C++ compiler optimisations (MSYS2 MinGW-64 bit GCC compiler used with VSCode)C++ 编译器优化(MSYS2 MinGW-64 位 GCC 编译器与 VSCode 一起使用)
【发布时间】:2021-11-15 21:22:34
【问题描述】:

我正在尝试将不同的优化级别(-O0、-O1、-O2、-O3 等)应用于 .cpp 文件的编译和执行。

但是,我无法弄清楚我需要使用的确切语法以及在哪里编写指令(即在哪个终端、VSCode 终端或 MinGW 终端)?

任何帮助将不胜感激。

tasks.json:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        },
        {
            "type": "cppbuild",
            "label": "C/C++: cpp.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\cpp.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: C:\\msys64\\mingw64\\bin\\cpp.exe"
        }
    ],
    "version": "2.0.0"
}

【问题讨论】:

  • 你应该有一些像tasks.json这样的文件。你有吗?
  • @RoQuOTriX 是的,我愿意。我该怎么办?
  • 能否复制问题中文件的输入?应该有一些 args 字段,您可以在其中放置 g++ 编译器的参数
  • @RoQuOTriX 我已将 task.json 的内容添加到问题中。

标签: c++ visual-studio-code gcc compiler-optimization mingw-w64


【解决方案1】:

在这个领域:

        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe"
        ],

添加优化选项:

        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "-O2"
        ],

假设您有两个任务(我不确定您为什么有第二个),您需要将其设置在正确的任务中。如果我是你,我会删除未使用的,而是创建一个用于调试和发布构建的任务:Release build in Visual Studio Code

注意这是c#的,不能复制粘贴!

【讨论】:

  • 感谢您的回复。我不确定自己为什么有两个任务。你知道我如何识别未使用的吗?
  • 尝试删除一个并查看您的程序是否正在编译和运行。如果是,那么这是未使用的。如果它不再工作,请将其放回并移除另一个。
  • 啊,我看到我删除了第二个,构建仍然成功完成。感谢您的所有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2018-05-02
  • 2015-02-13
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
相关资源
最近更新 更多