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

Susan Sarandon
リリース: 2024-11-01 09:47:30
オリジナル
636 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!