inflearn logo
知識共有
inflearn logo

CMakeとVSCodeで学ぶC/C++の実践的なビルド

CMakeLists.txtをコピペして使っていても、なぜ動くのかわからず困っていませんか?VSCodeで直接編集・ビルドしながら、ターゲット設計からパッケージング、クロスビルドやリモートデバッグまで、自分のものにしていきます。

18名 が受講中です。

難易度 初級

受講期間 無制限

C
C
C++
C++
Linux
Linux
VSCode
VSCode
cmake
cmake
C
C
C++
C++
Linux
Linux
VSCode
VSCode
cmake
cmake

受講後に得られること

  • Configure・Generate・Buildを区別して読み解くCMakeのビルドフローと、バージョン・ポリシーの問題解決

  • VSCode(CMake Tools、clangd)で設定・ビルド・テスト・デバッグが連動する開発ループ

  • PUBLIC / PRIVATE / INTERFACEを区別したターゲット中心設計とマルチモジュール構成

  • option、キャッシュ、configure_file、ジェネレータ式、プリセットによるビルド構成の制御

  • find_package、FetchContent、CTest、CPackへと続く依存関係・テスト・パッケージ配布

  • ツールチェーンファイルとsysrootを使ったクロスビルドとVSCodeリモートデバッグ

講義を終えると得られること

VSCodeで設定、ビルド、テスト、デバッグが一連の流れでつながるC/C++開発ループ。ボタンの位置を覚えるのではなく、設定ファイルと実際のログを読み、自分で修正できるようになります。

一言でまとめると

PC1台で設定・ビルド・テスト・デバッグのループを構築し、ターゲット中心の設計とテスト・パッケージ配布を経て、クロスビルドとリモートデバッグまで進みます。本編25章、約5時間。各章に練習問題があります。

制作方法のご案内

この講義はAIを活用した制作工程で制作しました。ナレーションは講師本人の声を学習した音声合成で、台本やグラフィックの制作にもAIツールを活用しています。企画と内容のチェックは、約20年にわたり組み込み分野の現場や企業研修に携わってきた講師が直接行いました。また、すべての演習結果は、実際のVSCode環境(PCおよびラズベリーパイの実機ボード)で実行して確認した画面です。

コースの全体像

STEP 1

開発ループを完成

設定からデバッグまで一つの流れで

01~04章

STEP 2

ターゲット設計とデプロイ

ライブラリ、ビルド制御、テスト、パッケージ

05~19章・24~25章

STEP 3

クロスビルドとリモート開発

ツールチェーンファイル、qemu、gdbserver

20~23章・ボードは選択式

"コピーして使うと破綻します"

コピーしてきたCMakeLists.txtは、ライブラリが1つ増えた瞬間、ビルドオプションが分岐した瞬間、クロスコンパイルを始めた瞬間に破綻します。ビルドはできても、なぜできるのかわからず、できないときはどこを直せばいいのかわかりません。

この講義の目標は、原理を理解して設計された、堅牢なビルドです。

なぜ今CMakeなのか

問題はMakeではなく、散在するビルドルールです。プロジェクトが大きくなると、コンパイラオプションはあちこちにコピーされ、ディレクトリごとに作られたMakefile同士が呼び出し合って複雑に絡み合います。

CMakeでは、何をビルドするかを宣言し、ビルドツールやツールチェーンに適したビルドファイルはCMakeが生成します。LLVM、Qt、OpenCVのような大規模なC/C++オープンソースプロジェクトや、VSCode、CLionのようなIDEは、すべてこの方式でプロジェクトを理解します。

こんなことを学びます

ターゲット中心の設計とビルド制御

01 Configure / Generate / Build、キャッシュ、Ninja、CMake 4.x互換性

02 VSCode開発ループ:CMake Tools、clangd、ブレークポイント・Watch

03 静的・共有ライブラリとPUBLIC / PRIVATE / INTERFACE

04 add_subdirectoryによるマルチモジュール化とシンボル可視性

05 option、設定ヘッダー、Generator Expression、function、プリセット

テスト、パッケージング、クロスビルド

06 Custom Commandsでビルド中にコード・ヘッダーを生成する

07 install、find_package、FetchContent

08 CTest・GoogleTestによるテストとCPack .debパッケージ

09 ツールチェーンファイル・sysrootを使ったクロスビルドとqemuの実行

10 Remote SSHによるリモート開発、gdbserverデバッグ、リリースまでの総合演習

この講義ならではの特徴

ボタンではなくログを読みます

設定ファイルと実際のConfigure / Buildログを一緒に読み解き、ツールのバージョンが変わっても同じ流れを見つけられるようにします。

PCから別のCPUまで、ボードは任意

ツールチェーンファイル、sysroot、qemu、gdbserverを使ったリモートデバッグまで扱います。ボードがなくても、PC上のqemuで最後まで追えます。

意図的に壊す

設定を除いて、エラーの原因を探します。

成果物で検証

生成ファイルやバイナリ、シンボルまで確認します。

章ごとの練習問題

自分で解いて、解説で確認します

実際の講義画面

VSCodeの出力ウィンドウでCMakeのビルド過程をそのまま確認します

clangdが読み込むcompile_commands.jsonまで確認します

ボードなしで、PC 1台から始めます

機材を最初から用意する必要はありません。すべての演習はUbuntu PC 1台で行います。クロス・リモート関連の章は、PC上のqemuで最後まで学習できます(20〜22章)。23章では、同じプロジェクトを実際のRaspberry Pi 3B+ボードに載せて、リモートデバッグまで試します。ボードがなくても、23章は画面を見ながら一緒に進められます。

18年にわたる現場での講義ノウハウ

2008年からサムスン電子、LG電子、SKハイニックス、現代モービスなどの企業や機関で、開発者を指導してきました。現場で受講生が最もつまずくのは、意外にもコードではなくビルドでした。この講義は、そのつまずきを順を追って解消できるよう構成しています。

MakefileからCMakeへ、一歩先へ進む開発者

CMakeLists.txtは読めるけれど、自分で設計するのは難しい方、毎回ビルドの問題に時間を取られている方のための講座です。

ビルドの問題に時間を取られていた開発者

設定ファイルとログを読み、直接修正できるように

どの分野でも、C/C++プロジェクトなら

サーバー、デスクトップ、ライブラリ、機器向けソフトウェアにそのまま適用できます。

実習環境

基本コース

  • Ubuntu 22.04 LTS

  • CMake 3.22、Ninja(CMake 4.xとの互換性に関するケースを含む)

  • gcc 11(build-essential)、gdb

  • VSCode + CMake Tools、clangd

クロス・リモート編(20〜23)

  • aarch64-linux-gnu-gcc、qemu-user

  • gdbserver、gdb-multiarch、Remote - SSH

  • Raspberry Pi 3B+以上は任意(なければqemu)

この講義で扱わないこと

  • Windows・MSVC・Visual Studioジェネレーター、macOS Xcode:実習はLinux基準です。原理は同じです。

  • Conan・vcpkgのようなパッケージマネージャー:FetchContent・find_packageで原理を扱います

  • CI(GitHub Actionsなど)、CDash、カバレッジレポート:テストはCTest・GoogleTestまで扱います。

  • Yocto・Buildroot、MCUファームウェアの書き込み・デバッグ:専門的なテーマのため、扱いません。

  • C++20モジュール、CMake 4.xの新機能:実習ではCMake 3.22を使用します。4.xとの互換性の問題のみ03章で扱います。

よくある質問

Q. Raspberry Piがなくても受講できますか?

いいえ。すべての実習はPC1台で行えます。クロスコンパイルとリモート開発(20〜22章)は、PC上のqemuで実行します。23章ではRaspberry Pi 3B+の実機を使って同じ手順を紹介します。ボードをお持ちであれば、そのまま同じように進められます。

Q. MacやWindowsでも同じようにできますか?

CMakeの構文とビルドの流れは、OSに依存しません。演習はUbuntu 22.04を基準としているため、VMまたはWSL2を推奨します。Visual Studio・Xcodeのジェネレーターは扱いません。

Q. C++プロジェクトやサーバー・デスクトップ開発にも適していますか?

はい。特定分野専用ではなく、汎用的なCMake実務講座です。例は主にCで進めますが、C/C++混在の章も含まれており、ターゲット設計、テスト、インストールとパッケージング、プリセットはC++プロジェクトにもそのまま適用できます。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • MakefileベースのC/C++プロジェクトをCMakeに移行しようとしている開発者

  • CMakeLists.txtをコピーして使うものの、原理を知らないCMake初心者

  • VSCodeをビルド・デバッグまで一貫して行えるC/C++開発環境として使いたい開発者

  • ライブラリの構成からテスト、パッケージの配布まで、一連の流れを学びたい開発者

  • クロスコンパイル、ABI管理、リモートデバッグまで習得したいCMake中級ユーザー

前提知識、
必要でしょうか?

  • CまたはC++の基本文法

  • Linuxターミナルの基本コマンド

こんにちは
guileschoolです。

キャリア認証

3,581

受講生

262

受講レビュー

281

回答

4.7

講座評価

6

講座

仁荷大学で電子工学を専攻し、組み込みソフトウェア開発者として働いていました。

2008年から18年間、現場で講義を行ってきました。サムスン電子、LG電子、SKハイニックス、現代モービス、LIG D&A、ソウル大学校などの企業や機関で開発者を指導し、その経験を講義教材としてまとめました。

『RTOS』(2008)、『Linuxシェル』(2018)、『FreeRTOS』(2019)、『Cortex-M』(2022)、『ブートローダーベースの組み込みシステム』(2023)

YouTube ガイルスクール(https://www.youtube.com/@guileschool):組み込みと開発の講義

Macの自動化も15年間研究しています。Keyboard MaestroとAppleScriptで反復作業を減らす方法を教え、Final Cut Pro自動化プラグイン「Greenlight」を自ら開発して販売しています。自作のツールはGitHub(https://github.com/guileschool)で公開しています。

YouTube キャプテンマックボット(https://www.youtube.com/@captainmacbot):MacでAIと自動化を使う方法

講義のリクエストおよびその他のお問い合わせはguileschool@gmail.comまでお送りください。

もっと見る

カリキュラム

全体

29件 ∙ (5時間 16分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

guileschoolの他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥49,500

50%

¥12,496