2017-07-12 16 views
0

VSコードのlaunch.jsonファイルで2回の異なるタスクを実行するために複数回の起動前タスクを使用しようとしていますが、 launch.jsonファイル内の最後の起動前タスク。私のtasks.jsonで作ったタスクは、同じコマンド( "g ++")を使ってWinBGIMを使う私のプログラムをコンパイルしますが、その引数は異なります(私はソースコードをまず "O"ファイルにコンパイルする必要があるからです"O"ファイルを "exe"ファイルにコンパイルする)ので、launch.jsonファイルでこれらの2つのタスクを1つの起動前タスクだけを使って実行する方法を探しています。そのための解決策がない場合、ソースコードを最初に "O"ファイルにコンパイルせずに、どのようにしてexeファイルにコンパイルできますか? ...VSコードで複数回起動前のタスクを使用できません

ここに私の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 
       } 
      ] 
     } 
    ] 
} 

答えて

1

はあなたが唯一のpreLaunchTaskを持つことができますが、あなたはあなたのに"dependsOn": "CompileToOfile"を追加することができますCompileWGDBWBGIというタスクを作成し、それをpreLaunchTaskとして使用します。このようにして、が実行される前にCompileToOfileが実行されます。

+0

"dependsOn"という単語の上にカーソルを置いたとき、「プロパティdependsOnは許可されていません」というメッセージが表示されるため、CompileWGDBWBGIタスクは実行されません。私は "dependsOn"を使う前に何か他のことをする必要がありますか、それは "dependsOn"のための指定された場所です(PSは "taskName"の後に配置しました)。 – Dawan

+1

あなたはTasks version 2.0.0私はちょうど 'tasks.json'で0.1.0を持っているのを見ました)。 – Gama11

+1

私が自分の答えを投稿したとき、私はこの最小の 'tasks.json'の設定でそれを最初にテストしました:https://pastebin.com/2GrKPmDY - 期待どおりに動作するようですか? – Gama11

関連する問題