[解決済み] 別のMakefileからMakefileを呼び出すには?
質問
あるmakefileを別のmakefileから呼び出すと、予期せぬ結果になることがあるのですが。 私は2つのmakefileを持っていて、1つは
/path/to/project/makefile
という名前の
/path/to/project/gtest-1.4.0/make/Makefile
. 前者が後者を呼び出すようにしようとしているのです。 path/to/project/makefile には、次のようなものがあります。
dev: $(OBJ_FILES)
$(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT)
$(MAKE) -f ./gtest-1.4.0/make/Makefile
clean:
rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o
rm -f ../svn-commit.tmp~
rm -f $(BIN_DIR)/$(PROJECT)
make -f gtest-1.4.0/make/Makefile clean
そして、その中の
/path/to/project/gtest-1.4.0/make/Makefile
私は
all: $(TESTS)
clean:
rm -f $(TESTS) gtest.a gtest_main.a *.o
を発行する。
cd /path/to/project
make
出力します。
make -f ./gtest-1.4.0/make/Makefile
make[1]: Entering directory `/path/to/project'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/path/to/project'
しかし、以下のコマンドを発行すると
cd /path/to/project
make clean
なるほどね。
make -f gtest-1.4.0/make/Makefile clean
make[1]: Entering directory `/path/to/project'
rm -f gtest.a gtest_main.a *.o
make[1]: Leaving directory `/path/to/project'
理解できない。どちらの場合も
/path/to/project/makefile
は、現在の作業ディレクトリに入ることを教えてくれています。 最初のケースでは、やることがないと思っていて (あるときはある)、 2 番目のケースでは、適切なディレクティブを見つけることができるのに (間違ったディレクトリを探していると出力されているとき)、 そのディレクティブを実行しようとします。
rm
コマンドを
/path/to/project
の代わりに
/path/to/makefile/gtest-1.4.0/make/
.
makefileを互いに呼び出す際に、何か基本的なことを見逃していませんか? 私はひどいコンセプトミスをしたのでしょうか、それともよくある落とし穴に当たったのでしょうか? どうすれば効果的にディレクトリを変更し、最初のmakefileの中から2番目のmakefileを呼び出すことができるのでしょうか? 私の理解では、単に
make -f <name>
で十分です。
bashでmake/gmake 3.81です。
解決方法は?
何をおっしゃりたいのかあまりよくわからないのですが、このように
-f
コマンドラインオプションはファイルを指定するだけで、makeにディレクトリを変更するように指示するものではありません。もし、別のディレクトリで作業を行いたい場合は
cd
をディレクトリに追加してください。
clean:
cd gtest-1.4.0 && $(MAKE) clean
の各行が
Makefile
は別のシェルで実行されるので、ディレクトリを変更し直す必要はありません。
関連
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み] makeとmake distの違いは何ですか?
-
[解決済み] PATH "文字列を表示するエコーファイルの作成
-
[解決済み] .mkファイルとMakefileの違いについて
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] makefile の記号 $@ と $< はどういう意味ですか?
-
[解決済み】makefileに'cd'コマンドを記述するには?
-
[解決済み】Makefileの現在の相対ディレクトリを取得する方法は?
-
[解決済み] Make: コマンドが失敗した後、どのように続行するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜmakeはターゲットが最新だと思うのですか?
-
[解決済み] 「複数のターゲットパターン」Makefile のエラー
-
[解決済み] makefileの*.o/.suffixesは何を意味しているのですか?
-
[解決済み] makefile の "ifeq" 条件構文
-
[解決済み] makefile で条件規則を使用する
-
[解決済み] Makefile での .PHONY の使用方法
-
[解決済み] Makefile.amとMakefile.inとは何ですか?
-
[解決済み] ってなんですか?(アットマークコロン)はMakefileの中でどういう意味ですか?
-
[解決済み] 変数が設定されていない場合、makefileを中断させるには?
-
[解決済み] CLionでCMakeの代わりにローカルのmakefileを使用する