カテゴリ: C++ 更新日: 2026/02/08

CMakeでマルチプラットフォーム対応を初心者向けに解説

CMakeによるマルチプラットフォーム対応
CMakeによるマルチプラットフォーム対応

先生と生徒の会話形式で理解しよう

生徒

「先生、CMakeで作ったC++プロジェクトって、WindowsとMacの両方で動かせますか?」

先生

「もちろんです。CMakeは、マルチプラットフォーム対応が大きな特徴です。CMakeLists.txtに正しく設定すれば、同じソースコードで異なる環境向けにビルドできます。」

生徒

「でも、Windows用とMac用でコンパイラや設定が違うんじゃないですか?」

先生

「その違いをCMakeが吸収してくれるんです。環境ごとにMakefileやVisual Studioプロジェクト、Xcodeプロジェクトを自動生成できるんですよ。」

1. マルチプラットフォーム対応とは?

1. マルチプラットフォーム対応とは?
1. マルチプラットフォーム対応とは?

マルチプラットフォーム対応とは、同じC++ソースコードをWindows、Mac、Linuxなど複数の環境でコンパイル・実行できることを指します。プログラミング初心者には少し難しそうに聞こえますが、CMakeを使えば手作業で設定を変える必要がなくなります。

例えば、WindowsではVisual Studioを使い、MacではXcodeを使う場合でも、CMakeLists.txtに依存関係やビルドターゲットを記述しておけば、環境ごとに最適化されたプロジェクトを自動生成できます。

2. CMakeLists.txtで環境ごとに条件分岐

2. CMakeLists.txtで環境ごとに条件分岐
2. CMakeLists.txtで環境ごとに条件分岐

CMakeでは、if(WIN32)if(APPLE)のような条件分岐を使って、OSごとに異なる設定を書くことができます。例えば、Windowsでは特定のライブラリをリンクし、Macでは別のライブラリをリンクする、といった使い方です。


cmake_minimum_required(VERSION 3.10)
project(MultiPlatformProject)

set(CMAKE_CXX_STANDARD 17)

add_executable(main main.cpp)

# OSによる条件分岐
if(WIN32)
    message("Windows向けビルド")
    target_link_libraries(main PRIVATE ws2_32)
elseif(APPLE)
    message("Mac向けビルド")
    target_link_libraries(main PRIVATE "-framework Cocoa")
elseif(UNIX)
    message("Linux向けビルド")
    target_link_libraries(main PRIVATE pthread)
endif()

このように書くと、CMakeは現在のOSを判定して、適切なライブラリやフラグを自動で設定します。初心者でも複雑なOS依存の処理を簡単に管理できるようになります。

3. ビルドの手順

3. ビルドの手順
3. ビルドの手順

マルチプラットフォーム対応でも、CMakeのビルド手順は基本的に同じです。ターミナルやコマンドプロンプトで以下を実行します。


mkdir build
cd build
cmake ..
make      # Windowsでは "cmake --build . " も使用可能
./main

実行結果は、どのOSでも同じく「Hello, C++ World!」など、ソースコード通りの出力になります。CMakeは環境ごとに最適なビルド設定を行ってくれるため、複数のOSで同じプロジェクトを安全に動かすことができます。

4. CMakeでマルチプラットフォーム対応するメリット

4. CMakeでマルチプラットフォーム対応するメリット
4. CMakeでマルチプラットフォーム対応するメリット
  • 同じソースコードを複数のOSでビルド可能
  • 環境依存のライブラリやコンパイラ設定を自動化
  • ビルド手順が統一され、初心者でも迷わない
  • プロジェクトの移植性が向上し、チーム開発に最適

CMakeを使うことで、Windows、Mac、Linuxの環境差を意識せずにC++開発が行えます。特に初心者でも、CMakeLists.txtに正しく設定するだけで、複雑なマルチプラットフォーム対応が簡単に実現できます。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

CMakeとは何ですか?また、なぜマルチプラットフォーム対応において重要なのですか?

CMake(シーメイク)は、C++などのプログラミング言語で書かれたソースコードを、WindowsやMac、Linuxといった異なるOS環境でビルドするための「プロジェクト構成ツール」です。通常、WindowsではVisual Studio、MacではXcodeのように、OSごとに開発環境やビルドの手順が異なります。しかしCMakeを使えば、CMakeLists.txtという一つの設定ファイルから、それぞれの環境に最適なプロジェクトファイルや実行ファイルを自動生成できるため、マルチプラットフォーム開発の効率が劇的に向上します。
カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.6
Java&Spring記事人気No6
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作