ホームページ  >  記事  >  バックエンド開発  >  Makefile を使用して C ソース ファイルをコンパイルしてバイナリにリンクするにはどうすればよいですか?

Makefile を使用して C ソース ファイルをコンパイルしてバイナリにリンクするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 05:01:02592ブラウズ

How do I compile and link C   source files into a binary using a Makefile?

Makefile 内の C ソース ファイルのコンパイルとリンク

/src フォルダー内のすべての C ソース ファイルをコンパイルする Makefile を作成することを目的としています。そしてそれらをルート /project フォルダー内のバイナリにリンクします。これを実現する方法は次のとおりです:

Makefile Configuration

  1. 次の変数を定義します:
SRC_DIR := src
OBJ_DIR := obj
SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
  1. コンパイラとリンカーのフラグを指定します:
LDFLAGS := ...
CPPFLAGS := ...
CXXFLAGS := ...
  1. バイナリをビルドするターゲット ルールを作成します:
main.exe: $(OBJ_FILES)
   g++ $(LDFLAGS) -o $@ $^
  1. コンパイル ルールを作成します各 C ソース ファイル:
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
   g++ $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

この Makefile は、/src ディレクトリ内の各ソース ファイルを、/obj ディレクトリ内の対応する .o ファイルにコンパイルします。次に、すべての .o ファイルをリンクして、/project ディレクトリに main.exe バイナリを作成します。

ベスト プラクティス

このアプローチは、一般的に一般的なアプローチと考えられています。プロジェクト内の C ソース ファイルをコンパイルおよびリンクします。ただし、従うべき特定のベスト プラクティスがあります:

  1. プロセスを一般化する: 各ファイルを手動で指定する必要がなく、ディレクトリ内のすべてのソース ファイルをコンパイルできるようにします。
  2. 依存関係の生成を自動化する: -MMD などのフラグを使用して依存関係グラフを自動的に生成し、メンテナンスのオーバーヘッドを削減します。
  3. 参考ドキュメント: 常に GNU Make を参照してください。 Makefile の構文と機能を包括的に理解するためのマニュアル。

以上がMakefile を使用して C ソース ファイルをコンパイルしてバイナリにリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。