は、以前私がこのようなものだったディレクティブpictDBM
を持っていました。複数行のbashスクリプトと連結
その後、私はコマンドラインから与えられたオプションの引数を追加できるようにしたいと考えました。このオプションは、pictDBM
サブパートで実行するgcc
コマンドラインに入ります。
私は自分のコードで宣言しているOPTS=""
変数を使用して問題に賛成しました(どのディレクティブの前にもmakefileの先頭にあります)。私の目的は、このようにmakeを呼び出すことです: make all OPT='-g'
。
base=gcc $(CFLAGS) -o [email protected] $^ $(LDLIBS)
パートは私がpictDBMで実行${base}
gcc
コマンドに${OPT}
変数の私のオプションを含めるかどうかのelse構造を使用することを宣言しました。
私はelse構文あれば、私のマルチラインを構築する助けたこと、this topicを赤:
pictDBM : db_list.o db_delete.o db_utils.o error.o pictDBM.o
db_create.o dedup.o image_content.o pictDBM_tools.o db_read.o
if [ ! -z "$$OPT" ]; \
then \
echo "$$base $$OPT" ; \ #for debugging purposes
eval "$$base $$OPT" ; \
else \
eval "$$base" ; \
fi ;
を私は単にmake all
すべてを実行する場合は、makeでOKのようだ、と出力プログラムがうまく動作します。
が、私はmake all OPTS='-g'
を実行すると、私は次の出力を得る:
-g
/bin/sh: 1: eval: -g: not found
makefile:16: recipe for target 'pictDBM' failed
make: *** [pictDBM] Error 127
あなたは、私はこの問題を解決する方法を、唯一-gエコープリントを見ることができますか?
make all CFLAGS=-g
とメイクファイルで変数をオーバーライドします:
override CFLAGS += # Your local options
all: pictDBM
pictDBM: db_list.o db_delete.o db_utils.o error.o pictDBM.o \
db_create.o dedup.o image_content.o pictDBM_tools.o db_read.o
gcc $(CFLAGS) -o [email protected] $^ $(LDLIBS)
CFLAGS
は一種の奇数である
私はあなたが行うことをお勧め何をやりました私のメイクファイルには、次のようになります。 'CFLAGS + = -std = c99を-Wall'
' CFLAGS + = $$(PKG-config設定のVIP --cflags) '
' LDLIBS + = $$(PKG-config設定をvips --libs)-lm -lssl -lcrypto'
'オーバーライドCFLAGS + = '
'オーバーライドLDFLAGS + ='
'全:pictDBM'
' pictDBM:db_list.o db_delete.o db_utils.o error.o pictDBM.o db_create.o'
'DEDUP .oのimage_content.o pictDBM_tools.o db_read.o'
が、私は 'すべてのCFLAGS = -g'
作るんときに私が取得:ファイルで – Simonlbc
' ccの-g -c -o pictDBM.o pictDBM.c pictDB.h:32:0、 pictDBM.c:11: /usr/local/include/vips/vips.h:85:18:致命的なエラー:glib.h:そのようなファイルまたはディレクトリがありません コンパイルが終了しました。:ターゲット 'pictDBM.o'のレシピが失敗しました make:*** [pictDBM.o]エラー1' 何が欠けていますか? –
Simonlbc
申し訳ありませんが、フォーマットはひどいです。私は改行を置くために最大限努力しました。しかし、試行錯誤の結果、このように見えてしまった:( – Simonlbc