の下で私のCのディレクトリ構造をメイクファイルを使用して、すべてのCPPファイルをコンパイル++プロジェクトが
MinGWの
/..
makefile <- the makefile is in root
/include <- subdirectory that has to be included while compiling
/obj <- target place for all *.o and final executable
/src <- sources
され、私の現在のメイクファイルは、次のとおりです。
CC=g++
CFLAGS=-c -Wall -std=c++11
INC=-Iinclude
SRC=src
TGT=obj
all: myapp
myapp: myapp.o
$(CC) $(TGT)/myapp.o -o $(TGT)/myapp
myapp.o:
$(CC) $(CFLAGS) $(INC) $(SRC)/myapp.cpp -o $(TGT)/myapp.o
clean:
rm -rf $(TGT)
mkdir $(TGT)
は、これが私の最初のファイルのために働きました。私はmakefileの初心者です - /src
ディレクトリのすべてのファイルをコンパイルし、/obj
ディレクトリの実行可能ファイルにリンクしてください。
src/myapp.c
obj/Makefile
は、既存のMakefile
を取るobj/
に移動、$(TGT)
と$(SRC)
への参照を省略します。
メイクファイルはWindowsで動作するように持って、私はあなたがVPATH
for separating source and object filesを使用することができますMinGWのとMSYS
'-Idir'部分をパラメータ化できますか?あなたのソリューションは簡潔に見えます。しかし、変更するには2つのことがあります。メークスクリプトはTGTディレクトリに '* .o'と最後の実行可能ファイルの両方を置く必要があります... – emesx
パラメータ化されたとはどういう意味ですか?これを別の変数に入れて、この変数を 'CXXFLAGS'に追加することもできます。修正された解答を参照 –
@elmes変更された 'Makefile'を試してください。別のターゲットディレクトリを調整しました。 –