2017-07-12 4 views
0

J'essaie d'utiliser la tâche de pré-lancement plus d'une fois pour exécuter deux tâches différentes dans mon fichier launch.json dans VS Code, mais elle exécute uniquement le dernière tâche de pré-lancement dans mon fichier launch.json. Les tâches que j'ai faites dans mes tâches.json utilisent la même commande ("g ++") pour compiler mon programme qui utilise WinBGIM, mais leurs arguments sont différents (c'est parce que je dois d'abord compiler mon code source dans un fichier "O" compiler le fichier "O" dans un fichier "exe"), donc je trouve un moyen d'exécuter ces deux tâches dans le fichier launch.json en utilisant une seule tâche de pré-lancement. S'il n'y a pas de solution pour cela, est-il possible de compiler mon code source dans un fichier exe sans le compiler d'abord dans un fichier "O"? ...Impossible d'utiliser la tâche de pré-lancement plus d'une fois dans VS Code

Voici mon fichier 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 
     } 
    ] 
} 

Voici mon fichier 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 
       } 
      ] 
     } 
    ] 
} 

Répondre

1

Vous ne pouvez avoir qu'un seul preLaunchTask, mais vous pouvez ajouter à votre "dependsOn": "CompileToOfile"CompileWGDBWBGI puis utilisez-le comme preLaunchTask. De cette façon, CompileToOfile est exécuté avant chaque exécution de CompileWGDBWBGI.

+0

Lorsque je place le curseur sur le mot "dependsOn", il est dit "Property dependsOn is not allowed", c'est pourquoi je pense qu'il n'exécutera pas la tâche CompileWGDBWBGI. Dois-je faire autre chose avant d'utiliser "dependsOn" ou est-ce qu'il y a un emplacement spécifié pour "dependsOn", (PS je l'ai placé après le "taskName") – Dawan

+1

Vous devez utiliser Tasks version 2.0.0 (Je viens de voir que vous avez 0.1.0 dans votre 'tasks.json'). – Gama11

+1

Lorsque j'ai posté ma réponse, je l'ai d'abord testé avec cette configuration minimale 'tasks.json': https://pastebin.com/2GrKPmDY - qui semble fonctionner comme prévu? – Gama11