カテゴリ: C言語 更新日: 2025/12/09

C言語のプロジェクト作成手順を初心者向けに解説!MakefileとCMakeでビルドを理解しよう

C言語のプロジェクト作成手順を初心者向けに解説
C言語のプロジェクト作成手順を初心者向けに解説

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

生徒

「C言語の環境は整えたんですが、次に何をすればいいんですか?」

先生

「次は、C言語のプロジェクトを作成して、実際にプログラムを動かせるようにする手順を学びましょう。」

生徒

「プロジェクトって何ですか?ただのファイルとは違うんですか?」

先生

「いい質問です。プロジェクトとは、C言語のソースコード・設定ファイル・ビルド方法などをまとめた“開発のまとまり”のことなんです。」

生徒

「なるほど!じゃあ、まずはプロジェクトを作る方法を教えてください!」

先生

「もちろん。これから、MakefileCMakeを使ったプロジェクトの作り方を、順番に見ていきましょう。」

1. C言語のプロジェクトとは?

1. C言語のプロジェクトとは?
1. C言語のプロジェクトとは?

C言語のプロジェクトとは、複数のソースコードを整理して管理するための仕組みです。ひとつのプログラムでも、main.cmath.cutils.cなど、ファイルが複数に分かれることがあります。これらを効率的にコンパイルしてまとめるのがプロジェクトです。

たとえば、家を建てるときに「設計図」「資材」「作業工程」をまとめておくように、C言語でもプログラムを作るには「どんなソースを使うか」「どうやってビルドするか」を整理しておく必要があります。

2. フォルダ構成を作ろう

2. フォルダ構成を作ろう
2. フォルダ構成を作ろう

まずは、C言語プロジェクトの基本フォルダ構成を作ってみましょう。
WindowsやMacどちらでも同じ構成でOKです。


my_c_project/
├── src/         (ソースコードを置くフォルダ)
│   └── main.c
├── include/     (ヘッダファイルを置くフォルダ)
│   └── mylib.h
└── Makefile     (ビルド設定ファイル)

フォルダを使い分けることで、あとから見ても分かりやすく整理できます。特にチーム開発や大きなプログラムを作る場合は、src(ソース)include(ヘッダ)を分けておくことが重要です。

3. 最初のC言語プログラムを作成しよう

3. 最初のC言語プログラムを作成しよう
3. 最初のC言語プログラムを作成しよう

次に、src/main.cというファイルを作って、以下の内容を書きましょう。


#include <stdio.h>
#include "mylib.h"

int main(void)
{
    hello();
    return 0;
}

続いて、include/mylib.hを作成します。


void hello(void);

最後に、src/mylib.cを作って以下のように書きます。


#include <stdio.h>
#include "mylib.h"

void hello(void)
{
    printf("C言語のプロジェクトへようこそ!\n");
}

これで、プログラム本体・関数定義・ヘッダファイルの3つが揃いました。

4. Makefileでプロジェクトをビルドする

4. Makefileでプロジェクトをビルドする
4. Makefileでプロジェクトをビルドする

Makefile(メイクファイル)とは、コンパイルの手順を自動化するための設定ファイルです。手動で何度もgccコマンドを入力する代わりに、一発で全部をコンパイルできます。

プロジェクトフォルダ直下にMakefileを作成し、次のように書きましょう。


CC = gcc
CFLAGS = -Iinclude
SRC = src/main.c src/mylib.c
OBJ = $(SRC:.c=.o)
TARGET = myapp

$(TARGET): $(OBJ)
	$(CC) $(OBJ) -o $(TARGET)

clean:
	rm -f $(OBJ) $(TARGET)

このMakefileは、ソースを自動的にコンパイルしてmyappという実行ファイルを作る設定です。

ターミナルで以下を実行してみましょう。


make

すると、すべてのCファイルが自動でビルドされ、次のように実行できます。


./myapp

C言語のプロジェクトへようこそ!

これでMakefileを使った自動ビルドの仕組みが完成です。

5. CMakeを使ってみよう

5. CMakeを使ってみよう
5. CMakeを使ってみよう

CMakeは、複雑なCプロジェクトでも簡単に設定を共有できるツールです。Visual StudioやCLionなどのIDEでも広く使われています。

まず、プロジェクトフォルダにCMakeLists.txtというファイルを作って、以下の内容を記述します。


cmake_minimum_required(VERSION 3.10)
project(MyCProject C)
set(SOURCES src/main.c src/mylib.c)
include_directories(include)
add_executable(myapp ${SOURCES})

そのあと、ターミナルで以下のコマンドを順に実行します。


mkdir build
cd build
cmake ..
make

このコマンドにより、CMakeが自動的にMakefileを生成してビルドしてくれます。実行ファイルmyappが作成されたら、以下のように動作確認をしましょう。


./myapp

C言語のプロジェクトへようこそ!

CMakeを使うと、OSや環境に依存せずビルドできるため、チーム開発や大規模プロジェクトで非常に便利です。

6. ビルドの流れを理解しよう

6. ビルドの流れを理解しよう
6. ビルドの流れを理解しよう

最後に、C言語のビルドの流れを整理しておきましょう。

  1. プリプロセス:ヘッダファイルの読み込みなどを行う。
  2. コンパイル:Cコードを機械語に変換する。
  3. リンク:複数のオブジェクトファイルをまとめて実行ファイルを作る。

MakefileやCMakeは、これらの手順を自動で行ってくれる便利な仕組みです。
これを理解しておくと、C言語の開発を効率的に進められるようになります。

まとめ

まとめ
まとめ

C言語のプロジェクト作成では、単にコードを書くことだけではなく、フォルダ構成を整理し、ビルド方法を明確にすることがとても大切です。とくに、プロジェクトが大きくなるほど複数のファイルが増えていきます。その中で、ソースコードをまとめる srcフォルダ、ヘッダファイルを管理するincludeフォルダ の役割をしっかり理解しておくことで、後から読み返したときやチーム開発を行う際に迷いがなくなります。 また、Makefile や CMake を利用してビルドの流れを自動化することで、C言語プロジェクト全体を効率よく管理できるようになります。Makefile は比較的小規模な構成でも扱いやすく、必要なコンパイル手順を書いておくだけで一括ビルドが可能です。一方で CMake は、OS が違っても同じ設定でビルドができる万能なビルドツールであり、大規模開発や複数人の共同作業に向いています。 さらに、C 言語のビルドにはプリプロセス・コンパイル・リンクという明確な流れがあり、これを理解することで Makefile や CMake を書くときの視点が変わります。「どのファイルがどの段階で処理されるのか」「どこにヘッダを置けばよいのか」といった判断が自然とできるようになるため、プロジェクト作成がよりスムーズになります。 この章では、初心者でも迷わずまとまったプロジェクト構造を作れるよう、実際のフォルダ構成やサンプルコード、Makefile、CMakeLists.txt を通して手順を丁寧に確認しました。実際に手を動かしてファイルを作り、ビルドして動かしてみることで、理解がさらに深まります。学んだ内容を繰り返し使ううちに、自然とプロジェクト作成が当たり前のようにできるようになるでしょう。

プロジェクト構造を理解するためのサンプルまとめ

ここでは、本編で紹介した内容を整理するために小さなCプロジェクトのサンプルをまとめて掲載します。


my_c_project/
├── src/
│   ├── main.c
│   └── mylib.c
├── include/
│   └── mylib.h
└── Makefile

// include/mylib.h
void hello(void);

// src/mylib.c
#include <stdio.h>
#include "mylib.h"

void hello(void) {
    printf("C言語のプロジェクトへようこそ!\n");
}

// src/main.c
#include <stdio.h>
#include "mylib.h"

int main(void) {
    hello();
    return 0;
}

# Makefile
CC = gcc
CFLAGS = -Iinclude
SRC = src/main.c src/mylib.c
OBJ = $(SRC:.c=.o)
TARGET = myapp

$(TARGET): $(OBJ)
	$(CC) $(OBJ) -o $(TARGET)

clean:
	rm -f $(OBJ) $(TARGET)

このように構造化されたフォルダと Makefile を組み合わせることで、学んできたビルドの流れが実際に動く形になります。初心者であっても、同じパターンを何度か繰り返すうちに自分でプロジェクトを作れるようになるため、積極的に試してみることをおすすめします。

先生と生徒の振り返り会話

生徒

「プロジェクトって難しいと思っていましたが、フォルダを分けて考えればすごく分かりやすくなるんですね!」

先生

「そうですね。整理された構造はプログラムの理解にもつながりますし、エラーを見つけやすくなる効果もありますよ。」

生徒

「Makefile が便利なのもよく分かりました。毎回 gcc を手で打つよりずっと楽ですね!」

先生

「その通りです。CMake も覚えるとさらに応用できるようになるので、ぜひ挑戦してみてください。」

生徒

「ビルドの仕組みも理解できて、自分のプロジェクトを作るのが楽しみになってきました!」

先生

「今日学んだ流れを参考にすれば、どんなC言語プロジェクトでも落ち着いて作れるようになりますよ。これからも繰り返し練習していきましょう。」

関連記事:
カテゴリの一覧へ
新着記事
New1
C++
C++の変数のスコープと有効範囲を完全解説!初心者でもわかる基本と考え方
New2
C++
C++とは?歴史と特徴を初心者向けに解説!Rustとの違いとモダン言語比較
New3
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド
New4
Rust
Rust開発環境をLinuxで構築する方法とおすすめ設定を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.2
Java&Spring記事人気No2
C言語
C言語の関数定義と呼び出しを完全ガイド!初心者でも分かる基本の書き方
No.3
Java&Spring記事人気No3
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.4
Java&Spring記事人気No4
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作
No.5
Java&Spring記事人気No5
C言語
Makefile入門:C言語プロジェクトを自動ビルドしよう!初心者でも分かる仕組みと使い方
No.6
Java&Spring記事人気No6
C言語
C言語の開発環境をWindowsに構築する方法【Visual Studio編】
No.7
Java&Spring記事人気No7
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.8
Java&Spring記事人気No8
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド