変数のリストがMakefileで定義されているかどうかをテストします

nowox

私のMakefileは、構成ファイルまたは変数で定義された複数の変数に基づいていますENV私の現在の解決策は、それらすべてを手動でテストすることです。

NOGOAL = help clean distclean mrproper
ifeq ($(strip $(filter $(NOGOAL), $(MAKECMDGOALS))),)
VAR1 ?= $(error VAR1 undefined)
VAR2 ?= $(error VAR2 undefined)
VAR3 ?= $(error VAR3 undefined)
...
VARn ?= $(error VARn undefined)
endif

foreach代わりにループを使用したいと思います:

ifeq ($(strip $(filter $(NOGOAL), $(MAKECMDGOALS))),)
TESTVAR = TEST1 TEST2 TEST3
$(foreach v, $(TESTVAR), $(eval $v ?= $$(warning Error: $v undefined)))
endif

残念ながら、eval期待どおりに動作しません。私は何か見落としてますか?

ここに、テストの2つの実装を含む私のテストの完全なテストがあります。場合でもTEST3、私はすべてのエラーを取得しない定義されていません。

TEST1 = 1
TEST2 = 1
#TEST3 = 1   # NOT DEFINED


TESTVAR := TEST1 TEST2 TEST3

# First implementation
$(foreach v, $(TESTVAR), $(eval $v ?= $$(warning Error: $v undefined)))

# Second implementation
$(foreach v, $(TESTVAR), $(eval $(call TESTER,$v)))
define TESTER
ifndef $1
$(warning $1 not defined)
endif
endef

# Dummy rule
all:
    @echo Hello World   

ただし、$(TEST3)どこかで使用すると、最初の実装は機能します

編集

ここではエラーは発生しませんが、TEST3は定義されていません。

~$ cat Makefile
TEST1 = 1
TEST2 = 1
#TEST3 = 1   # NOT DEFINED


TESTVAR := TEST1 TEST2 TEST3

# First implementation
$(foreach v, $(TESTVAR), $(eval $v ?= $$(warning Error: $v undefined)))

# Dummy rule
all:
        @echo Hello World

~$ make
Hello World
マッドサイエンティスト

まあ、私はそれを取得していないと思います。元のバージョンは、希望どおりに機能すると言っていますが、定義されていない変数の1つを使用しない限り、警告は出力されません。の最初の選択肢foreachは同じように機能します。警告を出力しますが、未定義の変数を使用し場合に限ります

あなたがそのようにしたい場合は、をテストcleanします(すべてのエラーを取得することはできませんので、おそらくそれらのルールが定義されていない変数を使用しませんので、本当に多くの意味がないなど、彼らは場合でした変数を使用しますそれは定義されていませんでした、おそらくあなたはそれらのルールも失敗させたいでしょう)。

しかし、2番目の編集では、変数が使用されているかどうかに関係なく、変数が定義されていない場合、makeをすぐに失敗させたいと言います(最後の例では定義しTEST3ていませんがTEST3、警告が出力されないように)。それが必要な場合は、変数に値を割り当てている理由?=、またはを使用している理由がわかりませんeval次のように書いてください。

ifeq ($(strip $(filter $(NOGOAL), $(MAKECMDGOALS))),)
  $(foreach v,$(TESTVAR),$(if $($v),,$(error Error: $v undefined))
endif

(このバージョンではないチェックする必要がありMAKECMDGOALS、それが未設定の変数にすぐに失敗しているため)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Windowsバッチスクリプトで環境変数が定義されているかどうかをどのように確認しますか

分類Dev

ng-ifを使用して変数が定義されているかどうかをテストする方法

分類Dev

複数の変数が設定されているかどうかをテストします

分類Dev

環境変数のリストがすべていくつかの値に設定されているかどうかをテストします

分類Dev

ifelseステートメント内で定義されている変数をどのように割り当てることができますか

分類Dev

PHPから、Apache変数が定義されているかどうかをテストします(.htaccessのIfDefineと同じ)

分類Dev

Sass関数が定義されているかどうかをテストします

分類Dev

Python:リストが順番に並んでいるかどうかを確認する| リストの終わりが定義されています

分類Dev

変数が設定されていないかどうかをテストします

分類Dev

JavaFXの.fxmlファイルですでに定義されているテキスト要素の値をどのように変更しますか?

分類Dev

スペースなしでMakefileの複数行にまたがる変数定義を分割するにはどうすればよいですか?

分類Dev

コントローラーの応答がTwigで定義されているかどうかをテストします

分類Dev

ネストされた変数がwhenステートメントで定義されているかどうかの確認

分類Dev

* ngIfを使用して変数が定義されているかどうかをテストする方法Ionic2

分類Dev

Scala.jsは、クラス変数がjs.nativeプロセスによって未定義に設定されているかどうかをどのようにテストできますか?

分類Dev

Elixir:リストを変数として使用して複数のマクロを定義するにはどうすればよいですか?

分類Dev

クラス変数が定義されているかどうかを確認します

分類Dev

変数を使用して関数シグネチャの引数のリストを定義するにはどうすればよいですか?

分類Dev

変数が複数のスクリプトで設定されているかどうかを確認してください

分類Dev

Antスクリプトで環境変数が設定されているかどうかを確認します

分類Dev

PowerShellを使用してファイルをインポートし、既存のすべてのプレースホルダー変数をスクリプトで定義された変数に置き換えるにはどうすればよいですか?

分類Dev

Python:ループ内の変数にアイテムを割り当てるにはどうすればよいですか? 変数とアイテムの名前が事前に定義されたリストに基づいて変更されるのですか?

分類Dev

「LMword」リストの単語(合計ですべての単語)がテキストに表示される回数をカウントする関数を定義するにはどうすればよいですか?

分類Dev

bashスクリプトに渡された最初の引数が設定されているかどうかを確認していますか?

分類Dev

Jshintがこのifステートメントで「変数はすでに定義されています」と言っているのはなぜですか?

分類Dev

関数がチャイスクリプトで定義されているかどうかを確認するにはどうすればよいですか?また、型付き引数を使用して関数を実行するにはどうすればよいですか?

分類Dev

ansible:変数のリストをチェックする正しい方法が設定されていますか?

分類Dev

変数が設定されているかどうかをテストする方法は?

分類Dev

変数にBATCHのテキストが含まれているかどうかを確認します

Related 関連記事

  1. 1

    Windowsバッチスクリプトで環境変数が定義されているかどうかをどのように確認しますか

  2. 2

    ng-ifを使用して変数が定義されているかどうかをテストする方法

  3. 3

    複数の変数が設定されているかどうかをテストします

  4. 4

    環境変数のリストがすべていくつかの値に設定されているかどうかをテストします

  5. 5

    ifelseステートメント内で定義されている変数をどのように割り当てることができますか

  6. 6

    PHPから、Apache変数が定義されているかどうかをテストします(.htaccessのIfDefineと同じ)

  7. 7

    Sass関数が定義されているかどうかをテストします

  8. 8

    Python:リストが順番に並んでいるかどうかを確認する| リストの終わりが定義されています

  9. 9

    変数が設定されていないかどうかをテストします

  10. 10

    JavaFXの.fxmlファイルですでに定義されているテキスト要素の値をどのように変更しますか?

  11. 11

    スペースなしでMakefileの複数行にまたがる変数定義を分割するにはどうすればよいですか?

  12. 12

    コントローラーの応答がTwigで定義されているかどうかをテストします

  13. 13

    ネストされた変数がwhenステートメントで定義されているかどうかの確認

  14. 14

    * ngIfを使用して変数が定義されているかどうかをテストする方法Ionic2

  15. 15

    Scala.jsは、クラス変数がjs.nativeプロセスによって未定義に設定されているかどうかをどのようにテストできますか?

  16. 16

    Elixir:リストを変数として使用して複数のマクロを定義するにはどうすればよいですか?

  17. 17

    クラス変数が定義されているかどうかを確認します

  18. 18

    変数を使用して関数シグネチャの引数のリストを定義するにはどうすればよいですか?

  19. 19

    変数が複数のスクリプトで設定されているかどうかを確認してください

  20. 20

    Antスクリプトで環境変数が設定されているかどうかを確認します

  21. 21

    PowerShellを使用してファイルをインポートし、既存のすべてのプレースホルダー変数をスクリプトで定義された変数に置き換えるにはどうすればよいですか?

  22. 22

    Python:ループ内の変数にアイテムを割り当てるにはどうすればよいですか? 変数とアイテムの名前が事前に定義されたリストに基づいて変更されるのですか?

  23. 23

    「LMword」リストの単語(合計ですべての単語)がテキストに表示される回数をカウントする関数を定義するにはどうすればよいですか?

  24. 24

    bashスクリプトに渡された最初の引数が設定されているかどうかを確認していますか?

  25. 25

    Jshintがこのifステートメントで「変数はすでに定義されています」と言っているのはなぜですか?

  26. 26

    関数がチャイスクリプトで定義されているかどうかを確認するにはどうすればよいですか?また、型付き引数を使用して関数を実行するにはどうすればよいですか?

  27. 27

    ansible:変数のリストをチェックする正しい方法が設定されていますか?

  28. 28

    変数が設定されているかどうかをテストする方法は?

  29. 29

    変数にBATCHのテキストが含まれているかどうかを確認します

ホットタグ

アーカイブ