質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Q&A

0回答

304閲覧

GNU makeにてパターンルール(%)が認識されない

退会済みユーザー

退会済みユーザー

総合スコア0

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

0グッド

0クリップ

投稿2022/03/04 00:11

編集2022/03/04 01:25

状況

GNU makeにて、パターンルールを以下のように使用しようと考えているのですが、
パターンルールが認識されず、ただの"%"文字として認識されてしまっています。

コード

# A_%.xからA_%.cを生成 A_%.c: A_%.x @touch $@ # A_%.xを作成 A_%.x: @touch A_%.x

コード実行結果

A_%.c(%文字のまま)が生成される

確認できている内容

前提条件(例えばA_0.x)が存在すること

makeのバージョン

GNU Make 3.81

質問

上記問題の原因についてご存じありませんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2022/03/04 00:33

そうなってしまった手順をもっと詳しく。 以下、私の結果です。 $ cat makefile # A_%.cを生成 A_%.c: A_%.x echo $^ $@ $ touch A_0.x $ make A_0.c echo A_0.x A_0.c A_0.x A_0.c
itagagaki

2022/03/04 00:48

あと念のため make --version を確認してみては
退会済みユーザー

退会済みユーザー

2022/03/04 00:55

使用したコードの詳細を記載しました。 ご確認お願いします。
itagagaki

2022/03/04 01:10

makefileの内容はわかりましたから、makeコマンドを実行した手順を書いてください。 あと、make -d A_0.c とかやればmakeがどう推論しているか見ることができます。
melian

2022/03/04 01:27

% ではなく wildcard 関数で予め展開してみてはどうでしょう。 SRC := $(wildcard A_*.x) $(SRC:.x=.c): $(SRC) @touch $@
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問