複数の .cpp ファイルを効率的にコンパイルおよびリンクするための Makefile を作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-01 02:38:28
オリジナル
215 人が閲覧しました

How Can I Create a Makefile to Efficiently Compile and Link Multiple .cpp Files?

複数の .cpp ファイルを効率的にコンパイルおよびリンクできますか?

質問は、複数の .cpp ファイルを 1 つのファイルにコンパイルする Makefile の作成を中心にしています。指定されたソース ディレクトリ (src/) を、別のオブジェクト ディレクトリ (obj/) 内の対応する .o ファイルに変換し、最後に結果の .o ファイルをプロジェクトのルート ディレクトリ (./) の実行可能バイナリにリンクします。

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))
LDFLAGS = ... # Linker flags
CPPFLAGS = ... # Preprocessor flags
CXXFLAGS = ... # Compiler flags

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

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g++ $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
ログイン後にコピー

この Makefile は最初に次の変数とルールのリストを生成します。 .cpp ファイルを src/ ディレクトリに保存し、それを SRC_FILES 変数に保存します。次に、このリストを obj/ ディレクトリ内の対応する .o ファイルのリストに変換し、OBJ_FILES 変数に保存します。

各 .cpp ファイルを対応するファイルにコンパイルするために g コンパイラが使用されます。 .o ファイルを作成し、g リンカーを使用してすべての .o ファイルをリンクし、最終的な実行可能バイナリを作成します。 main.exe.

グッド プラクティスと標準的なアプローチ

このアプローチは複数の .cpp ファイルのコンパイルとリンクに機能しますが、より標準化されたアプローチがあることは注目に値します。

そのようなアプローチの 1 つは、CMake や Bazel などのビルド システムの使用です。これらのシステムは、自動依存関係計算やクロスプラットフォーム サポートなど、コンパイルとリンクのプロセスを管理するためのより包括的なツールと機能のセットを提供します。

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

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