16

makefileで詳細なコンパイルを有効にしたいのですが、条件付きのを作成する方法がわかりませんOR

説明させてください。設定またはで詳細なコンパイルを指定できるようにしたいと思います。それを利用する(そして、認識している他のmakefileを使用する)スクリプトがあるので、利用可能な状態を維持したいと思います。V=1 VERBOSE=1VERBOSE=1VERBOSE

したがって、結果はこれら2つのコマンドが同じである必要があります。

make all VERBOSE=1 # pain to write
make all V=1

さて、私のmakefileは今日このようになります:

ifdef VERBOSE
[issue compilation commands with verbose mode]
endif

私が達成したいのは、Cのプリプロセッサに近いものです。

if defined(VERBOSE) || defined(V)
[issue compilation commands with verbose mode]
endif

あなたはそれをする方法を知っていますか?

4

5 に答える 5

15

私はこれが好きです:

ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""

endif

$(strip アプローチに似ていますが、より直感的な$( またはキーワードを使用します

于 2012-11-16T04:54:16.580 に答える
7
VERBOSE := $(or $(VERBOSE),$(V))

...それから...

ifeq ($(VERBOSE),1)
#Conditional stuff
endif
于 2014-05-28T09:11:25.167 に答える
4

私の知る限り、GNU make の条件付きのものは OR と AND を許可していません。あなたはいつでも次のようなことをすることができます:

ifdef VERBOSE
DOVERBOSE = yes
endif
ifdef V
DOVERBOSE = yes
endif

ifeq( $DOVERBOSE, yes )
    main verbose stuff here
endif

しかし、そもそも V の定義 (ほとんど自己文書化されていない) を導入する必要がある理由がわかりません。

于 2011-05-16T09:30:31.043 に答える