ホームページ >バックエンド開発 >C++ >複数の .cpp ファイルを 1 つのバイナリにコンパイルしてリンクするにはどうすればよいですか?

複数の .cpp ファイルを 1 つのバイナリにコンパイルしてリンクするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 09:47:30723ブラウズ

How to Compile and Link Multiple .cpp Files into a Single Binary?

複数の .cpp ファイルをバイナリにコンパイルしてリンクする方法

この記事は、複数の .cpp ファイルをバイナリにコンパイルする際の問題に対処することを目的としています。 .o オブジェクトを作成し、それらを 1 つのバイナリにリンクします。

Makefile 構成

これを実現するには、次の内容で Makefile を利用できます:

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g++ $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g++ $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

説明:

  • SRC_DIR: ソース .cpp ファイルを含むディレクトリを指定します。
  • OBJ_DIR: .o オブジェクトが作成されるディレクトリを示します。
  • SRC_FILES: SRC_DIR 内のすべての .cpp ファイルのリスト。
  • OBJ_FILES : 生成されるすべての .o オブジェクトのリスト。
  • main.exe: 最終バイナリの名前。
  • LDFLAGS: リンカー フラグ。
  • CPPFLAGS: C プリプロセッサ フラグ。
  • CXXFLAGS: C コンパイラ フラグ。

依存関係グラフの生成

ソース ファイルとオブジェクト ファイル間の依存関係を自動的に生成するには、次の内容を Makefile に追加します:

CXXFLAGS += -MMD
-include $(OBJ_FILES:.o=.d)

ベスト プラクティス

このアプローチは、複数の C ファイルのコンパイルとリンクによく使用されます。ただし、追加のガイダンスと高度なオプションについては、GNU Make マニュアルを参照することが重要です。

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

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