MENU
カタログクリップ
本ページはプロモーションを含みます。

makefileで、if文 / for文を使う、あるいは複数行のコマンドを書く方法

2020 6/28
広告
コンピューター
2017年12月4日2020年6月28日

makefileで、for文を使うなど、コマンドを複数行に分けて記述したいときがあります。その方法と注意点を紹介します。

makefile中で、そのまま複数行のコマンドを書くと、コマンドは行ごとにシェルに渡されてしまうので、エラーとなります。

目次

if文

そのため、次のように\を使って、改行を明示します。

if [ -d tmp ]; then\
  echo "tmp is a directory";\
fi

for文

for文を書く場合は同様に\を使い、次のようにします。

for i in 1 2 3; do\
  echo $$i;\
done

ここでの注意点は、変数を参照する場合には、$を2つ重ねるということです。$のままだと、makeに解釈されてしまいますので、それを防ぎます。

本当にfor文を使ったほうがよいか?

for文で複数ファイルを処理するmakefileを作成する前に考えたいのは、それは本当にmakefileを使用して行うべき処理かということです。

コンパイルにmakeを使う利点の一つは、以前のコンパイル以降に更新されていない依存ファイルは、コンパイルしなおさない、という点です。

for文で複数ファイルを処理する場合は、更新されているかどうかを気にせず処理してしまうことになり、この利点が失われてしまいます。

 

makefileではなく、ただのシェルファイルを書いた方がよい場合ではないか考えてみましょう。

 

makeのターゲットには、ワイルドカード*を使うことができます。

ワイルドカードを使用して実現できる処理の場合は、その方がよいでしょう。

 

ただ、ワイルドカードを使用しても、ディレクトリを再帰的に下っていくことはできませんので気をつけましょう。

依存関係が不特定という場合は少ないでしょうから、ディレクトリを列挙するという方法で対処できると思います。

 

stackoverflow の how to write loop in a makefileのページも参考になります。

 

以上、makefileでfor文を使う、あるいは複数行のコマンドを書く方法でした。

コンピューター
highlightjs

関連記事

  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
    2025年4月16日
  • AXE5400VとAX80Vの3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX80の3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000とAX1800の2つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000VとAX23Vの2つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80VとAX73Vの3つの違い。[Wi-Fiルーター]
    2025年4月5日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. makefileで、if文 / for文を使う、あるいは複数行のコマンドを書く方法
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次