Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法在VS代码中多次使用启动前任务_C++_Json_Visual Studio Code_Mingw W64_Bgi - Fatal编程技术网

C++ 无法在VS代码中多次使用启动前任务

C++ 无法在VS代码中多次使用启动前任务,c++,json,visual-studio-code,mingw-w64,bgi,C++,Json,Visual Studio Code,Mingw W64,Bgi,我尝试多次使用pre-launch task来执行launch.json文件中的两个不同任务。不幸的是,它只执行我的launch.json文件中最后一个启动前任务。mytasks.json中的任务使用相同的命令(“g++”)来编译我的程序,但它们的参数不同(这是因为我需要先将源代码编译成“O”文件,然后将“O”文件编译成“exe”文件),因此,我正在寻找一种方法,如何在launch.json文件中仅使用一个启动前任务来执行这两个任务。还有其他想法吗 tasks.json: { // Se

我尝试多次使用pre-launch task来执行launch.json文件中的两个不同任务。不幸的是,它只执行我的launch.json文件中最后一个启动前任务。mytasks.json中的任务使用相同的命令(“g++”)来编译我的程序,但它们的参数不同(这是因为我需要先将源代码编译成“O”文件,然后将“O”文件编译成“exe”文件),因此,我正在寻找一种方法,如何在launch.json文件中仅使用一个启动前任务来执行这两个任务。还有其他想法吗

tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "tasks": [
        {
            "taskName": "CompileToOfile",
            "command": "g++",
            "args": [
                "-c","${fileBasename}",
                "-o","${fileBasenameNoExtension}.o",
                "-I","/Users/Acer/MinGW64/include",
                "-I","/Users/Acer/MinGW64/x86_64-w64-mingw32/include",
                "-I","/Users/Acer/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include",
                "-I","/Users/Acer/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++",
                "-m32"
            ],
            "isShellCommand": true
        },
        {
            "taskName": "CompileWGDBWBGI",
            "command": "g++",
            "args": [
                "${fileBasenameNoExtension}.o",
                "-o",
                "${fileBasenameNoExtension}.exe",
                "-L","/Users/Acer/MinGW64/lib32",
                "-L","Users/Acer/MinGW64/x86_64-w64-mingw32/lib32",
                "-static-libgcc",
                "-lbgi",
                "-lgdi32",
                "-lcomdlg32",
                "-luuid",
                "-loleaut32",
                "-lole32",
                "-m32"
            ],
            "isShellCommand": true
        }
    ]
}
launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "preLaunchTask": "CompileToOfile",
            "preLaunchTask": "CompileWGDBWBGI",
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true
        },
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "preLaunchTask": "CompileToOfile",
            "preLaunchTask": "CompileWGDBWBGI",
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "/Users/Acer/MinGW64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

您只能有一个
preLaunchTask
,但可以将
“dependsOn”:“compiletofile”
添加到
CompileWGDBWBGI
任务中,然后将其用作
预启动任务。这样,每次执行
CompileWGDBWBGI
之前都会执行
compiletofile

当我将光标悬停在单词“dependsOn”上时,它会显示“不允许使用属性dependsOn”,这就是我认为它不会执行CompileWGDBWBGI任务的原因。在使用“dependsOn”之前,我是否需要做其他事情,或者“dependsOn”有一个指定的位置(注意,我把它放在“taskName”之后)。你需要使用Tasks 2.0.0版(我刚刚看到你的
Tasks.json
中有0.1.0)。当我发布我的答案时,我首先用这个最小的
任务对它进行了测试。json
设置:-看起来像预期的那样工作?所以现在我的问题是,当我开始调试时,如何防止终端被关注,我被迫删除“isShellCommand”,因为v2.0.0不支持它。请尝试
显示“:“从不”
演示文稿中
结构(如果您使用的是VSCode 1.14.0,则在该版本中会发生一些变化)。