「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 複数の .cpp ファイルを 1 つのバイナリにコンパイルしてリンクするにはどうすればよいですか?

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

2024 年 11 月 11 日に公開
ブラウズ:623

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

Dependency Graph Generation

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

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

ベスト プラクティス

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3