私は過去に使用した他のメイクファイルを少し変更しています。変数${CXXOPTS}
が.c.o
メイクファイルルールで使用されていないのに、奇妙な問題があります。 makefileを実行すると、g++ -c -o SeqPrep2.o SeqPrep2.cpp
が実行されると実行されます。g++ -Iseqan-03-02-2012 -c -o SeqPrep2.o SeqPrep2.cpp
。 (編集:私は問題を解決しますが、このメイクファイルが最初の場所ですべてで働いていた理由について以下の私の更新質問を参照)Makefile変数が無視されています
L=-lm -lz
SEQANINC=seqan-03-02-2012
DESTDIR=$(HOME)/
BINDIR=bin
CXXOPTS=-I${SEQANINC}
CXX=g++
A=SeqPrep2
USEROPTS=
O=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
SOURCES=$(wildcard *.cpp)
all: ${A} ${O} ${SOURCES}
install: ${O} ${MYLIBS} ${SOURCES}
${CXX} ${USEROPTS} -o ${DESTDIR}${BINDIR}/${A} ${O} ${L}
${A}: ${O} ${MYLIBS} ${SOURCES}
${CXX} ${USEROPTS} -o ${A} ${O} ${L}
clean::
rm -f ${A} ${O}
.c.o:
${CXX} ${CXXOPTS} ${USEROPTS} -c $< -o [email protected]
check-syntax:
${CXX} ${CXXOPTS} ${USEROPTS} -c -o .nul -S ${CHK_SOURCES}
UPDATE:
私は.cpp.o
に.c.o
を変更しました。これはgnuの推測で、私のルールの1つで.oファイルを尋ねたときに、それを実行するように言っていなくても、g++ -c -o SeqPrep2.o SeqPrep2.cpp
を実行するだけです。私は新しい質問だと思うのですが、なぜ上記のメイクファイルが全く機能しなかったのですか、なぜそれが私が観察した奇妙な振る舞いをしていたのですか? 1つ注意すべきことは、書式設定にもかかわらず、g++
と-c
の間に空白がたくさんあります。私の変数を入れようとしていたようですが、そうではありませんでした。それは、たとえそれが今のようではないように見えても、私のルールを見ていたと私が信じるように元々部分的になっています。このような仕組みがどういうものなのか理解してくれてありがとう
あなたはルール '.co'を持っていますが、CPPファイルをコンパイルしている、これは問題ではありません、私は一種のかすんそれらによルール – macduff