14
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacでC++の実行環境を構築する際にめっちゃ詰まった記録

Last updated at Posted at 2025-01-22

初めまして!!ノベルワークス入社2年目、プログラム初心者のそうまです!!

今回はC++の実行環境をMacで構築した際に、予想以上に詰まったので記録として残そうと思います!

エディタはVSCodeを使います!

何故 C++ なのか

僕は普段からjavascriptしか触っておらず、高級言語が故に裏でめんどくさい事はなんでも肩代わりしてくれるせいで、メモリや実行環境といった低レベルな部分を全く気にせずここまで生きてきてしまいました。

そこで、javascriptよりも低級な言語をやってみて知識を蓄えようと思ったのですが、同時に「どの言語を学ぶべきか」や「ただ言語の勉強をするだけではモチベーションが続かない」 とも考えていました。
そんな中で、この「ゲーム開発で学ぶC言語入門 プロのクリエイターが教える基本文法と開発技法」という本に出会い、これなら楽しみながら学べそうだと思い、C++ を選ぶことにしました。

第一の壁 コンパイラ

まず「コンパイルとは何か?」ですが、プログラミング言語におけるコンパイルとは、人間が理解しやすい形式で書かれたコードを、コンピュータが実行できる機械語へと変換するプロセスを指します。

頭整理.drawio (10).png

で、まずどのコンパイラを用いてC++で書いたコードをコンパイルするのかを決めるとこから始まったのですが、前提として "コンパイラを選ぶ" というステップに遭遇する事自体が初めてで普通に混乱しました、この時点で「C++ コンパイラ 種類」とか調べて既に時間を食っています。

今回はコンパイラにclang++を選びました!Copilotに聞いた所「Macではこちらの方が一般的」と教えてくれたからです(ここら辺の理由とかコンパイラの違いはまた別機会に調べようと思います)

こちらのコンパイラですが、以下のコマンドでインストール出来るみたいなので早速試してみました。

xcode-select --install

xcode-selectとは
Appleが提供する統合開発環境(IDE)であるXcodeのコマンドラインツールを管理するためのコマンドです。

すると以下のエラーが出現。

command not found: xcode

どうやら、Homebrewのインストールに問題があるみたいなので、解決するために以下のコマンドを入力。

brew doctor

再度 xcode-select --install する事で無事にコンパイラをインストール出来ました!

このコンパイラを使用して C++ のコードをコンパイルするタスクを VScode に以下のように設定しました!

VScodeのタスク機能
特定のコマンドやスクリプトを事前に設定ファイル(tasks.json)に登録しておく事で、ターミナルに手動でコマンドを入力しなくても簡単に実行出来る機能の事。

tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
            "type": "shell",
            "label": "c++_build",
            // 今回はC++のコンパイラを指定、gccかclang++か
            "command": "clang++",
            "args": [
                "-g",
                // コンパイルするファイルを指定、今回だと実行したファイル名が入る
                "${file}",
                // コンパイルしたファイルの名前を指定
                "-o",
                "${fileDirname}/build.out"
            ],
            // タスクのグループを指定
            "group": "build", 
            "presentation": {
                "reveal": "never"
            }
		}
	]
}

タスクの設定については以下の記事を参考にしました!ありがとうございました!

第二の壁 デバッガー

次に開発では必須となるデバッガーを入れていきます。デバッガーとは、コードの実行を細かく制御しプログラムの挙動を詳細に分析出来るツールです。

こんな感じのやつ

頭整理.drawio (11).png

デバッガーを入れる事も今回初めてだったのでかなり苦戦しました。特に「デバッガーをインストールする必要がある」という事を理解するまでに時間がかかりました...(コンパイラがあれば全部出来ると思ってた)

今回は lldb を使います!VScode の拡張機能に CodeLLDB が存在するのでインストールし、VScode のデバッグ構成に以下を追加します!

VScodeのデバッグ設定
デバッグ構成を設定ファイル(launch.json) に記述する事で、デバッグの構成を作成・追加する事が出来る。

launch.json
{
	"version": "0.2.0",
	"configurations": [
		{
			// デバッグの名前を指定
			"name": "c++_debug",
			// デバッガーの指定、今回はlldbを指定
			"type": "lldb",
			"request": "launch",
			// デバッグするファイルを指定、タスクでコンパイルしたファイルを指定
			"program": "${fileDirname}/build.out",
			"args": [""],
			"cwd": "${fileDirname}",
			"preLaunchTask": "c++_build",
		}
	]
}

こちらも以下の記事を参考にしました!!ありがとうございました!!

デバッグの起動構成について

最後に

コンパイルしたコードの実行タスクを以下のように設定して、構築完了です!

tasks.json
{
    // コンパイルしたファイルを実行するタスク
    "type": "shell",
    "label": "c++_run",
    "command": "${fileDirname}/build.out",
    "group": "test",
    "presentation": {
        "reveal": "always",
        "panel": "new"
    }
}       

纏め

まだまだ入り口なのに、コンパイラやらデバッガーやら知らない事が多すぎて自分がいかにjavascript(というよりブラウザ?)に甘やかされていたかを痛感しています...これから低レベルな知識をしっかり身につけて、少しずつでもエンジニアとして成長していきたいと思います!一歩ずつ着実に頑張ります!

14
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?