[解決済み】Makefileの現在の相対ディレクトリを取得する方法は?
質問
このようなアプリ固有のディレクトリにいくつかのMakefileがあります。
/project1/apps/app_typeA/Makefile
/project1/apps/app_typeB/Makefile
/project1/apps/app_typeC/Makefile
各Makefileは、このパスの1つ上の階層にある.incファイルを含んでいます。
/project1/apps/app_rules.inc
app_rules.incの中で、ビルド時にバイナリを配置する場所を設定しています。すべてのバイナリをそれぞれの
app_type
のパスが必要です。
/project1/bin/app_typeA/
を使ってみました。
$(CURDIR)
を、このように。
OUTPUT_PATH = /project1/bin/$(CURDIR)
が、代わりにこんな感じでパス名全体にバイナリが埋もれてしまいました。 (冗長であることに注意してください)
/project1/bin/projects/users/bob/project1/apps/app_typeA
実行中のカレントディレクトリを取得するにはどうすればよいですか?
app_typeX
バイナリをそれぞれのタイプフォルダに入れるために?
解決方法を教えてください。
シェル機能
を使用することができます。
shell
関数を使用します。
current_dir = $(shell pwd)
.
または
shell
と組み合わせて
notdir
絶対パスが必要でない場合は
current_dir = $(notdir $(shell pwd))
.
更新しました。
を実行しているときのみ機能します。
make
を、Makefile のカレントディレクトリから実行します。
Flimm さんのご指摘の通りです。
これは、Makefile の親ディレクトリではなく、現在の作業ディレクトリを返すことに注意してください。
例えばcd /; make -f /home/username/project/Makefile
は、そのcurrent_dir
変数が/
ではなく/home/username/project/
.
以下のコードは、どのディレクトリから起動された Makefile でも動作します。
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
関連
-
[解決済み】makeコマンドのエラー makefile:18: *** missing separator. 停止する [重複]。
-
[解決済み】「make」と「make all」の違いとは?
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み] Makefile のターゲットとしてグロブパターンを指定する
-
[解決済み] PATH "文字列を表示するエコーファイルの作成
-
[解決済み] .mkファイルとMakefileの違いについて
-
[解決済み] 現在のバッチファイルディレクトリを取得する
-
[解決済み】makefileに'cd'コマンドを記述するには?
-
[解決済み】makefileでターゲットのリストを取得する方法とは?
-
[解決済み] 別のMakefileからMakefileを呼び出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】makeコマンドのエラー makefile:18: *** missing separator. 停止する [重複]。
-
[解決済み】Makeエラー:セパレータがない
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み】なぜmakeはターゲットが最新だと思うのですか?
-
[解決済み] ターゲットが指定されていない場合、「make」アプリはどのようにしてビルドするデフォルトターゲットを知るのですか?
-
[解決済み] makefileでLDFLAGSを使用する方法
-
[解決済み] makeファイルの@!の意味は?
-
[解決済み】Makefileの現在の相対ディレクトリを取得する方法は?
-
[解決済み] GNU MakeのCPPFLAGSとCXXFLAGSの違いについて
-
[解決済み] Makefileの:=と=の違いは何ですか?