質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%

Q&A

解決済

1回答

15958閲覧

VSCode C++ 複数ファイルをコンパイルする設定 (or使い方のヒントなどあれば)

mjk

総合スコア303

0グッド

0クリップ

投稿2020/09/14 20:03

VSCodeでC++のヘッダとソースの2つのファイルをコンパイルする設定で、
task.jsonのファイル指定を増やしたら正常にコンパイルすることが出来ました。

普段はメインのソースファイルだけをコンパイルする使い方をしているのですが、
ちょっとだけ使いたい時に切り替える時はどうしたら良いのか気になります。

質問

task.jsonをリネームして切り替えたり、ワークフォルダを切り替えたりするのが一般的な使い方なのでしょうか?
何かしらのtask.json設定で1つのファイルか複数ファイルかワイルドカード的に可変指定する方法はありますか?

1.ソースフィルが1つでも2つでも自動でコンパイル出来る設定があれば知りたいです。
2.上記の方法が存在しないなら、一般的な使い方や楽に切り替えられる方法などあれば知りたいです。

「こういう使い方があるよ」などのヒントやアドバイスも助かりますのでご教示よろしくお願いします。

試したこと

・ vscode C++ 複数ファイル コンパイルのキーワードで検索して探してみましたが見つけられませんでした。

・ task.jsonのファイル指定を直接記述して試したら正常にコンパイル出来ました。

"${file}",      //恐らく1つ目のファイル名が自動的に入るはず。(ログなどから推察) "C:\work\b.cpp", //←ここを2つ目のファイル名として直接フルパス記述してみたらコンパイル成功した。

イメージ説明

{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build", "type": "process", "command": "C:\msys64\mingw64\bin\g++.exe", "args": [ "-std=gnu++17", "-g", "-O2", "-fexec-charset=CP932", "${file}", "C:\work\b.cpp", "-o", "${fileDirname}\${fileBasenameNoExtension}.exe" ], "group": { "kind": "build", "isDefault": true } } ] }

開発環境

Win10 (10.0.18362)
VSC1.48.2
C++17
gcc version 10.2.0 (Rev1, Built by MSYS2 project)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Cmake覚えるといいよ。

VSCodeの拡張でCmakeToolsがあるからそれを導入してください。
そうすると、Cmakeが動くようになるはずです。
そして、VSCodeコマンドからCmake:クイックスタートを選択。

あとは以下のようなCmakeLists.txtをかけば、ビルド環境を作ってビルドしてくれます。

cmake

1 #ファイル検索:リストアップ ターケットファイルリストの生成 2 file(GLOB Target_Files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *.cpp) 3 4 #実行ファイルの生成 5 add_executable(main ${Target_Files})

add_executableを増やせばウィンドウ下部の追加されたCmakeツールバーから
個別にビルドしたり、実行したりできます。

ちなみにデバッグ用のlaunch.jsonは以下の通り

cmake

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "(gdb) 起動", 9 "type": "cppdbg", 10 "request": "launch", 11 "program": "${command:cmake.launchTargetPath}", 12 "args": [], 13 "stopAtEntry": false, 14 "cwd": "${workspaceFolder}", 15 "environment": [ 16 { 17 // add the directory where our target was built to the PATHs 18 // it gets resolved by CMake Tools: 19 "name": "PATH", 20 "value": "$PATH:${command:cmake.launchTargetDirectory}" 21 } 22 ], 23 "externalConsole": false, 24 "MIMode": "gdb", 25 "setupCommands": [ 26 { 27 "description": "gdb の再フォーマットを有効にする", 28 "text": "-enable-pretty-printing", 29 "ignoreFailures": true 30 } 31 ] 32 } 33 ] 34}

投稿2020/09/15 07:02

編集2020/09/15 07:33
bjnes

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mjk

2020/09/15 09:36

回答ありがとうございます。とても便利そうですね。 全く知らないキーワードだったので早速調べて使えるようにしておきたいです。
bjnes

2020/09/15 09:48

ちょうど私も使ってるんです。 わからないことがあったら気軽に質問投げてください。 googletestが少しだけできるようになるぐらいまでなら答えられますから。
mjk

2020/09/15 09:53

googletestなる新ワードとお気遣いありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問