make clean
私の努力の過程で書くすべての出力がクリーンアップされていることを確認する特定の変数:
clean-lib:
override ARCH=32
rm -rf $(NEWLIB)$(LIBNAME).so $(NEWLIB)$(LIBNAME).a
override ARCH=64
rm -rf $(NEWLIB)$(LIBNAME).so $(NEWLIB)$(LIBNAME).a
LIBNAME
次のように構成されます。
ARCH=64
PROJNAME=libWebSightR220
LIBNAME=$(PROJNAME)x$(ARCH)
ユーザーはバージョン32を使用する必要がありますmake lib ARCH=32
。変更されたARCH
投票コード:
make: override: Command not found
また、makeを更新しようとしましたが、すでに最新です。
XXXXX@debianvirtualbox:~/$ make --version
GNU Make 4.0
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
ベストアンサー1
これは使用しているmakeのバージョンとは関係ありません。 「target:dependent」行の後に入力したコマンドはシェルを介して実行され、名前付きLinuxコマンドはまったくありませんoverride
。override
内部make
コマンドなので、この場所には表示できません。次のように動作します。
override ARCH=64
all:
echo $(ARCH)
編集:必要なものを達成する方法(少なくともGNU makeを使用して)は次のとおりです。
all:
$(eval override ARCH=32)
echo $(ARCH)
$(eval override ARCH=64)
echo $(ARCH)
ところで、この方法で、make ARCH=45
両方ともARCH=45 make
「32\n64」を出力し、前者がなければoverride
「45\n45」を出力し、後者のみ「32\n64」を出力します。