2012-03-20 4 views
-1

私はすでに別のターゲットや味(デバッグ・リリース)をコンパイルすることもできますが、私が作るときに問題がある:make debugまたはmake releaseこれは、オブジェクトと、各フォルダのフォルダ内のライブラリーを生成します。autotoolsを使用して、異なるパスの異なるターゲットを再コンパイルしないでください。

これはMakefile.amです:

AM_CXXFLAGS = @[email protected] 

ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} 

lib_LIBRARIES = libInitDB.a 

libInitDB_a_SOURCES = \ 
InitDB.cpp 

.PHONY: debug release 

debug: 
    make CXXFLAGS='$(CXX_DEBUG_FLAGS) $(CXXFLAGS)' 
    mkdir -p $(DEBUG_DIR) 
    mv $(lib_LIBRARIES) $(DEBUG_DIR)/$(lib_LIBRARIES) 
    mv *.o $(DEBUG_DIR) 

release: 
    make CXXFLAGS='$(CXX_RELEASE_FLAGS) $(CXXFLAGS)' 
    mkdir -p $(RELEASE_DIR) 
    mv $(lib_LIBRARIES) $(RELEASE_DIR)/$(lib_LIBRARIES) 
    mv *.o $(RELEASE_DIR)  

が、私が作るときに問題がある:make debugまたはmake release再び、私はオブジェクトやライブラリを移動すると、それは再び、すでにオブジェクトやライブラリを生成し、デバッグフォルダまたはリリースフォルダに格納されます。

誰かがこれを避けるため、私は正しいフォルダにその検索をコンパイルするときにする方法を見つけるために私を助けてもらえますか?代わりに、あなたのターゲットの両方の味を生成する1 Makefileを持つことの

答えて

2

、あなたは別のオプションで構成された2つの別々のビルドディレクトリを持つことができます。例えば

mkdir debug 
(cd debug && ../configure --enable-debug) 

mkdir release 
(cd release && ../configure --enable-release) 

この方法では、あなたがいずれかのディレクトリに移動し、単にmakeを入力する必要があるものだけを再コンパイルすることができます。

+2

+1、s/could/should/ –

+0

こんにちは、回答ありがとうございますが、configure.acに2回コールする代わりに、Makefile.amで何かを行うことが可能です私のために。 – arimaujinn

+0

@arimaujinnいいえ、私はそれを行うにはどのような方法を知っていないと私は実際に知っている必要はありません。あなたが欲しいものを考えてみて:異なる2は、さまざまな設定オプションを使用して、同じソースのビルド、独自の中間ファイルで各1(* .o)は、最終的な目標(LIBSおよび実行可能)。これはまさにビルドディレクトリのためのものです。今では、上のディレクトリにある 'Makefile'を使ってビルドディレクトリの作成/設定を自動化することはできません。 – Francesco

関連する問題