あなたの小さなC/C++プロジェクトは、あなたのコードをすべて1つのファイルにまとめることが現実的ではない段階に達しました。いくつかのコンポーネントを分割する必要があります。だからsrc/
ディレクトリを作成して、実際のMakefileを書かなければなりません。 hello: hello.o
以上のものああ... ... [email protected]
または$<
または$^
でしたか?クラップあなたは覚えていない(私は決してしない)。Canonical 'simple project'メイクファイル
簡単なソースツリーを扱うことができる単純なMakefileがありますか?もしそうなら、その中には何があり、それはなぜですか?私はファイルを追加するたびにMakefileを編集しなくても、Cファイルでいっぱいのディレクトリをコンパイルできる、もっとも小さくてシンプルなMakefileを探しています。ここで私がこれまで持っているものです。
CXX = clang++
CXXFLAGS = ...
LDFLAGS = ...
EXENAME = main
SRCS = $(wildcard src/*.cc)
OBJS = $(patsubst src%.cc,build%.o, $(SRCS))
all: $(EXENAME)
build/%.o: src/%.cc
@mkdir -p $(dir [email protected])
$(CXX) -c -o [email protected] $^ $(CXXFLAGS)
$(EXENAME): $(OBJS)
$(CXX) -o [email protected] $^ $(LDFLAGS)
clean:
rm -rf $(EXENAME) build/
このMakefileは、build/
ディレクトリ内のファイルに.o
src/
ディレクトリ内のすべての.cc
ファイルを構築する、親ディレクトリにそれらをリンクします。
あなたはどうしたらいいですか?
私はcmakeを使います。ヘッダーファイルが2つあると、Makefileを直接保守するだけではスケールアップできません。オートツールはかさばりすぎて、あまりにも多くのステップを必要とします。 Cmakeは真のワンサイズのツールです。 –
私は間違いなくcmakeを〜10個以上のファイルに使用します。それはそれよりも小さいもののためにちょっと重いようです。 – nornagon
それは意外にも重大ではなく、本当に必要な作業量だけです。最初の呼び出しの後、CMakeファイルを変更したとしても、 'make'を呼び出すだけです。依存関係を理解する方法は非常に魔法です:-)(しかし、そうですね、あなたはあまりにも小さな状況のためにあまりにも多くを見つけるかもしれない構造) –