[解決済み】makefileに'cd'コマンドを記述するには?
質問
例えば、私のmakefileには以下のようなものがあります。
all:
cd some_directory
と入力したところ
make
のように 'cd some_directory' とだけ表示されました。
echo
コマンドを実行します。
解決方法は?
実際にコマンドを実行し、ディレクトリを
some_directory
しかし、これはサブプロセスのシェルで実行され、make や作業中のシェルには影響しません。
の中でより多くの作業を行いたい場合、その作業は
some_directory
のように、セミコロンをつけて、他のコマンドを追加する必要があります。改行はルールの終わりと解釈されるため使用できないことに注意してください。
例えば
all:
cd some_dir; echo "I'm in some_dir"; \
gcc -Wall -o myTest myTest.c
また、バックスラッシュや改行を入れても、すべてのコマンドの間にセミコロンが必要であることにも注意してください。これは、シェルが文字列全体を1行として解析しているためです。コメントにあるように、コマンドの結合には「&&」を使うべきです。これは、直前のコマンドが成功した場合にのみ実行されることを意味します。
all:
cd some_dir && echo "I'm in some_dir" && \
gcc -Wall -o myTest myTest.c
これは、クリーンアップのような破壊的な作業をするときに特に重要なことで、そうしないと間違ったものを破壊してしまうからです。
cd
が何らかの理由で失敗した場合。
しかし、よくある使い方は、サブディレクトリでmakeを呼び出すというもので、これは調べてみるといいかもしれません。このためのコマンドラインオプションがあります。
cd
そのため、あなたのルールは次のようになります。
all:
$(MAKE) -C some_dir all
に変更されます。
some_dir
を実行し
Makefile
で、ターゲットは "all"です。ベストプラクティスとして
$(MAKE)
を呼び出すのではなく
make
を直接使用すると、正しい make インスタンスを呼び出すように注意します (たとえば、ビルド環境に特別な make バージョンを使用している場合など)。また、特定のスイッチ、たとえば
-t
.
ちなみに 常に は、出力がない場合でも、実行したコマンドを (明示的に抑制されていない限り) エコーします。
関連
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み] ターゲットが指定されていない場合、「make」アプリはどのようにしてビルドするデフォルトターゲットを知るのですか?
-
[解決済み] デバッグとリリースのビルドを行うためのmakefileを設定するにはどうすればよいですか?
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み】SIMPLE C++のMakefileの作り方
-
[解決済み】CMakeをGNU Makeと一緒に使う:正確なコマンドを見るにはどうすればいい?
-
[解決済み】コマンドの出力をMakefileの変数に代入する方法
-
[解決済み】Makefileの現在の相対ディレクトリを取得する方法は?
-
[解決済み】makefileでターゲットのリストを取得する方法とは?
-
[解決済み] 別のMakefileからMakefileを呼び出すには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Makefileにループを書くには?
-
[解決済み] CygwinでのMakefile
-
[解決済み] GNU make で "commands commence before first target" エラーが発生する。
-
[解決済み] make clean、make clobber、make distclean、make mrproper、make realcleanの違いは何ですか?
-
[解決済み] Makefile のターゲットとしてグロブパターンを指定する
-
[解決済み] makefileの*.o/.suffixesは何を意味しているのですか?
-
[解決済み] makefile の "ifeq" 条件構文
-
[解決済み] .mkファイルとMakefileの違いについて
-
[解決済み] makeファイルの@!の意味は?
-
[解決済み】OSがmakefileを検出する