現在HP-UX11.23環境にて開発をしております。
その中でMakeファイルを作成しているのですが
文法的な誤り、または他の原因があるのかは不明ですが以下の処理が実現できません。
知識のある方いらしたら解決方法を教えて下さい。
内容
------------------------------
cleanというターゲットをmakeファイル内に定義し(以下参照)、
make cleanとコマンドラインから実行した場合にのみそこに定義されている処理を行う。
しかし以下★の個所がコマンドではないと判断され??エラーとなってしまう。
試しにexport OPTION=-g0と書き換えてもexportはされない。
『OPTION=-g0』の設定を実現するにはどのように記述すればよいのでしょうか。
OPTION=-g0の前にタブを入れないと、make cleanと実行しようが、make と実行しようが設定が有効になってしまいます。
あくまでmake cleanの時のみ有効にしたいのですが。。。
clean:
(タブ)$(RMF) $(TARGET) $(OBJS) $(PCFILE) ./*.lis
(タブ)OPTION=-g0★★
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
すでに他の方から解決策が出ていますが、一応 ANo.3 の方法でも書き入れておきます。
dev:
(タブ)make OPTION="-g0 +pathtrace=global:local +w +wlint +w1 +wsecurity=4 +check=all +check=bounds:pointer +check=truncate"
多分これでも可能かと。どのmakeかにあまり依存しないでしょう。
No.6
- 回答日時:
「devターゲット内の$(OPTION)に代入している個所がコマンドでないと判断されエラーとなってしまう」の「エラー」とは, どんなエラーですか? どんなメッセージを, 誰が出しているのですか?
今ちょろっと調べた限りでは
とりあえずマニュアルを読め
で終わっていそうな気がする.
No.5
- 回答日時:
とりあえずmakeは
ターゲット:
(タブ)コマンド1
(タブ)コマンド2
コマンド1やコマンド2を実行するとき、それらにリダイレクト文字'>'やパイプ'|'などが含まれていなければ(他にも条件はあったと思うけど割愛)、/bin/shを経由せずに直接実行します。
またコマンド1,コマンド2は実行されるとき別プロセスなので仮にコマンド1で環境変数を設定しようがコマンド2には全くの無関係です。ライフタイムはその行のコマンドの間だけ。
また'\'を使って複数行を1つの行として扱うこともできます。
ターゲット:
(タブ)コマンド1-1 ; \
コマンド1-2 ; \
コマンド1-3
は、
ターゲット:
(タブ)コマンド1-1 ; コマンド1-2 ; コマンド1-3
と同義。
No.4
- 回答日時:
内容的にはHP-UXのmakeとは関係なくてどのmakeでも同じ事ですが、
OPTION=-g0
は、何に対して設定したいのでしょうか?
makeから呼ばれるプログラムへの環境変数に設定したいのでしょうか?
それともmake自身の変数として設定したいのでしょうか?
この回答への補足
情報が不足しておりますね。質問時にはしょってしまいました。
正確には以下です。
makeと実行した場合はTARGETターゲットのみを実行する為、
コンパイル時(cc)の$(OPTION)変数は空白なので何も$(OPTION)変数に関しての
オプションは付与されない。
make developと実行した場合はdevターゲットを実行して$OPTION変数にオプションが設定され
コンパイル時(cc)に$OPTION変数に設定されたオプションを有効にしたい。
しかしdevターゲット内の$(OPTION)に代入している個所がコマンドでないと判断されエラーとなってしまう。かといってタブを入れないとmakeと実行した場合にも変数設定が有効になってしまう。
つまりmake developと実行した場合のみ変数に特定の値を設定、
makeと実行した場合は変数に値を設定せず
コンパイルさせるということを実装したいのですがうまくいきません。
------------------------------------
OPTION =
all: $(TARGET)
clean:
(タブ)(RMF) $(TARGET) $(OBJS) $(PCFILE) ./*.lis
dev:
(タブ)OPTION=OPTION=-g0 +pathtrace=global:local +w +wlint +w1 +wsecurity=4 +check=all +check=bounds:pointer +check=truncate
develop:dev all
rebuild: clean all
$(TARGET): $(OBJS) $(HEAD) $(PCFILE)
(タブ)$(CC) $(LFLAGS32) -o $(TARGET) $(SHLIB_FLAGS) $(OBJS) $(SHLIB_LIBS) \
+DD32 $(OPTION)
No.3
- 回答日時:
身の回りにHP-UXがないのでHP-UXのmakeで確認をとれないのですが、下のようにすれば make clean のときに-g0がechoされ、ただmakeと打ったときは-g1がechoされると思います。
OPTION=-g1
all:
(タブ)echo $(OPTION)
clean:
(タブ)make OPTION=-g0 clean-local
clean-local:
(タブ)$(RMF) $(OBJS) $(PCFILE) ./*.lis
(タブ)echo $(OPTION)
No.2
- 回答日時:
すみません。
これで何がやりたいのでしょうか?設定したいのは、Make内の変数なのでしょうか?環境変数なのでしょうか?
ここでOPTIONを設定したところで、その後使っている様子が無いし、無意味に思えるのですが?
この回答への補足
情報が不足しておりますね。質問時にはしょってしまいました。
正確には以下です。
makeと実行した場合はTARGETターゲットのみを実行する為、
コンパイル時(cc)の$(OPTION)変数は空白なので何も$(OPTION)変数に関しての
オプションは付与されない。
make developと実行した場合はdevターゲットを実行して$OPTION変数にオプションが設定され
コンパイル時(cc)に$OPTION変数に設定されたオプションを有効にしたい。
しかしdevターゲット内の$(OPTION)に代入している個所がコマンドでないと判断されエラーとなってしまう。かといってタブを入れないとmakeと実行した場合にも変数設定が有効になってしまう。
つまりmake developと実行した場合のみ変数に特定の値を設定、
makeと実行した場合は変数に値を設定せず
コンパイルさせるということを実装したいのですがうまくいきません。
------------------------------------
OPTION =
all: $(TARGET)
clean:
(タブ)(RMF) $(TARGET) $(OBJS) $(PCFILE) ./*.lis
dev:
(タブ)OPTION=OPTION=-g0 +pathtrace=global:local +w +wlint +w1 +wsecurity=4 +check=all +check=bounds:pointer +check=truncate
develop:dev all
rebuild: clean all
$(TARGET): $(OBJS) $(HEAD) $(PCFILE)
(タブ)$(CC) $(LFLAGS32) -o $(TARGET) $(SHLIB_FLAGS) $(OBJS) $(SHLIB_LIBS) \
+DD32 $(OPTION)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) Makefileが実行できない 2 2022/07/28 23:49
- 英語 ①普通名詞の所有格+②普通名詞で、①普通名詞に定冠詞の意味を付加したい場合の表現方法等について 23 2022/09/30 12:47
- 英語 「再び」の接頭辞”re-"を有する単語と文末に"again"を付けた表現のニュアンスに違いについて 1 2022/12/13 12:40
- 英語 この文でなぜbeingが付いているのかわかりません 4 2022/11/24 01:01
- 英語 提示文の構造について 3 2022/06/27 18:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- 英語 to make about 3 2022/10/30 14:17
- TOEFL・TOEIC・英語検定 to make about 1 2022/10/25 13:06
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでキー操作を行う。
-
コマンドプロンプトが実行中か...
-
Tera Term Proに関する質問です。
-
ttlで戻り値を取得する方法
-
HEXから元に戻すには
-
別のユーザーフォームのコマン...
-
VBユーザーフォームで時間入力
-
パワーシェル 画面解像度 変更
-
コマンドプロンプトで表示が多...
-
jupyter notebookが開けません!
-
DOSコマンド、又はEXEで...
-
【Teratermマクロ】文字列の一...
-
ExcelVBAでDOSコマンドの標準出...
-
文字の点滅はどうやるのですか?
-
windowsでバイナリエディタ
-
VC++,SendMessage()の使い方
-
Excel VBA コマンドライン(MS-...
-
コマンドプロンプトについて
-
PC版コールオブデューティ4
-
コマンドキーがないんですけど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでキー操作を行う。
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
別のユーザーフォームのコマン...
-
VBユーザーフォームで時間入力
-
Tera Term Proに関する質問です。
-
コマンドプロンプトですべてのU...
-
コマンドキーがないんですけど...
-
TEXの表の位置が・・・
-
ルーターにつながっている全て...
-
デフォルトのショートカットキ...
-
dosバッチ起動後、画面を閉じな...
-
文字の点滅はどうやるのですか?
-
EEPROMのデータの初期化について
-
RTX1100の削除コマンド
-
JP1起動バッチについて
-
コンボボックス(最終行取得)
-
makeコマンドのエラー
-
ディスクの空き容量を取得する...
おすすめ情報