"フォルダーを開く" プロジェクトのソース コードをビルドする方法を Visual Studio に伝えるには、tasks.vs.json ファイルを追加します。 ここでは任意のタスクを定義し、ソリューション エクスプローラーのコンテキスト メニューから呼び出すことができます。 すべてのビルド コマンドは CMakeLists.txt で指定されるため、CMake プロジェクトにはこのファイルが使用されません。 CMake 以外のビルド システムでは、tasks.vs.json でビルド コマンドを指定し、ビルド スクリプトを呼び出すことができます。 tasks.vs.json の使用の全般的な情報については、「"フォルダーを開く" の開発のためにビルド タスクとデバッグ タスクをカスタマイズする」を参照してください。
タスクには、type、default、launch、または remote という 4 つの値のいずれかを持つ msbuild プロパティがあります。 リモート接続が必要な場合を除き、ほとんどのタスクでは launch を使用する必要があります。
既定のプロパティ
既定のプロパティは、すべての種類のタスクで使用できます。
| プロパティ | タイプ | 説明 |
|---|---|---|
taskLabel |
ひも | (必須)。)ユーザー インターフェイスで使用されるタスク ラベルを指定します。 |
appliesTo |
ひも | (必須)。)コマンドを実行できるファイルを指定します。 ワイルドカードの使用はサポートされています (例: ""、".cpp"、"/*.txt")。 |
contextType |
ひも | 使用できる値: "custom"、"build"、"clean"、"rebuild"。 タスクが表示されるコンテキスト メニュー内の場所を指定します。 既定値は "custom" です。 |
output |
ひも | タスクへの出力タグを指定します。 |
inheritEnvironments |
配列 | 複数のソースから継承された環境変数のセットを指定します。
CMakeSettings.json や CppProperties.json などのファイルで変数を定義し、タスク コンテキストに使用できるようにします。
Visual Studio 16.4:env.VARIABLE_NAME 構文を使用して、タスクごとに環境変数を指定します。 変数の設定を解除するには、変数を "null" に設定します。 |
passEnvVars |
ブーリアン | タスク コンテキストに追加の環境変数を含めるかどうかを指定します。 これらの変数は、envVars プロパティを使用して定義された変数とは異なります。 既定値は "true" です。 |
launch のプロパティ
タスクの種類が launch の場合、次のプロパティを使用できます。
| プロパティ | タイプ | 説明 |
|---|---|---|
command |
ひも | 起動するプロセスまたはスクリプトの完全なパスを指定します。 |
args |
配列 | コマンドに渡される引数のコンマ区切りのリストを指定します。 |
launchOption |
ひも | 使用できる値: "None"、"ContinueOnError"、"IgnoreError"。 エラーが発生したときにコマンドを続行する方法を指定します。 |
workingDirectory |
ひも | コマンドを実行するディレクトリを指定します。 既定値はプロジェクトの現在の作業ディレクトリです。 |
customLaunchCommand |
ひも | コマンドを実行する前に適用するグローバル スコープのカスタマイズを指定します。 %PATH% などの環境変数の設定に役立ちます。 |
customLaunchCommandArgs |
ひも | customLaunchCommand の引数を指定します (customLaunchCommand は必須です)。 |
env |
カスタム環境変数のキーと値のリストを指定します。 例: "myEnv": "myVal" | |
commands |
配列 | 順番に呼び出すコマンドのリストを指定します。 |
例
次のタスクでは、CppProperties.json スキーマ リファレンスに示すように、フォルダーにメイクファイルが指定され、Mingw64 環境が CppProperties.json で定義されている場合に、make.exe を呼び出します。
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "gcc make",
"appliesTo": "*.cpp",
"type": "launch",
"contextType": "custom",
"inheritEnvironments": [
"Mingw64"
],
"command": "make"
},
{
"taskLabel": "gcc clean",
"appliesTo": "*.cpp",
"type": "launch",
"contextType": "custom",
"inheritEnvironments": [
"Mingw64"
],
"command": "make",
"args": ["clean"]
}
]
}
ソリューション エクスプローラーで .cpp ファイルを右クリックすると、コンテキスト メニューからこれらのタスクを呼び出すことができます。
remote のプロパティ
C++ ワークロードを含む Linux 開発をインストールし、Visual Studio 接続マネージャーを使用してリモート マシンへの接続を追加すると、リモート タスクが有効になります。 リモート タスクを使用すると、リモート システム上でコマンドを実行できます。また、そこにファイルをコピーすることもできます。
タスクの種類が remote の場合、次のプロパティを使用できます。
| プロパティ | タイプ | 説明 |
|---|---|---|
remoteMachineName |
ひも | リモート マシンの名前。 接続マネージャーのマシン名と一致している必要があります。 |
command |
ひも | リモート マシンに送信するコマンド。 既定では、コマンドはリモート システム上の $HOME ディレクトリで実行されます。 |
remoteWorkingDirectory |
ひも | リモート マシンの現在の作業ディレクトリ。 |
localCopyDirectory |
ひも | リモート マシンにコピーするローカル ディレクトリ。 既定値は現在の作業ディレクトリです。 |
remoteCopyDirectory |
ひも |
localCopyDirectory がコピーされるリモート マシン上のディレクトリ。 |
remoteCopyMethod |
ひも | コピーに使用するメソッド。 使用できる値: "none"、"sftp"、"rsync"。 大規模なプロジェクトの場合は rsync をお勧めします。 |
remoteCopySourcesOutputVerbosity |
ひも | 使用できる値: "Normal"、"Verbose"、"Diagnostic"。 |
rsyncCommandArgs |
ひも | 既定値は "-t --delete" です。 |
remoteCopyExclusionList |
配列 | コピー操作から除外する localCopyDirectory 内のファイルのコンマ区切りリスト。 |
例
ソリューション エクスプローラーで main.cpp を右クリックすると、次のタスクがコンテキスト メニューに表示されます。 これは、ubuntuの というリモート マシンによって変わります。 このタスクによって、Visual Studio で現在開いているフォルダーがリモート マシンの sample ディレクトリにコピーされ、g++ が呼び出され、プログラムがビルドされます。
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "Build",
"appliesTo": "main.cpp",
"type": "remote",
"contextType": "build",
"command": "g++ main.cpp",
"remoteMachineName": "ubuntu",
"remoteCopyDirectory": "~/sample",
"remoteCopyMethod": "sftp",
"remoteWorkingDirectory": "~/sample/hello",
"remoteCopySourcesOutputVerbosity": "Verbose"
}
]
}
MSBuild プロパティ
タスクの種類が msbuild の場合、次のプロパティを使用できます。
| プロパティ | タイプ | 説明 |
|---|---|---|
verbosity |
ひも | MSBuild プロジェクト ビルドの出力 verbosityAllowed 値を指定します。"Quiet"、"Minimal"、"Normal"、"Detailed"、"Diagnostic" です。 |
toolsVersion |
ひも | プロジェクトをビルドするツールセットのバージョンを指定します (例: "2.0"、"3.5"、"4.0"、"Current")。 既定値は "Current" です。 |
globalProperties |
オブジェクト | プロジェクトに渡すグローバル プロパティのキーと値のリストを指定します (例: "Configuration":"Release") |
properties |
オブジェクト | 追加のプロジェクトのみのプロパティのキーと値のリストを指定します。 |
targets |
配列 | プロジェクトで呼び出すターゲットのリストを順番に指定します。 何も指定されていない場合は、プロジェクトの既定のターゲットが使用されます。 |