問題タブ [vpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
327 参照

makefile - GNU make: VPATH 指定時の循環依存

次の例でGNU makeが「循環依存」を考慮する理由を理解するのを手伝ってくれる人はいますか? VPATH が指定されておらず、ソース ファイルが現在のディレクトリに存在する場合、すべて問題ありません。

ありがとう、アレックス

0 投票する
2 に答える
3580 参照

c - .o ファイルを別のディレクトリに移動する Makefile

あるディレクトリにソース コードがあり、別のディレクトリにメイクファイルがあります。make システムの vpath メカニズムを使用してコードをコンパイルできます。.o ファイルは、makefile と同じフォルダーに作成されています。しかし、これらの .o ファイルを .o という別のディレクトリに移動したいと考えていますobj。私は次のことを試しました:

ただし、それらはメイクファイルと同じフォルダーにまだ作成されています。誰でもこの問題を解決するのを手伝ってもらえますか?

Makefile の強調表示された行を次に示します。

この後も Makefile と同じフォルダに .o ファイルを作成しています。obj に移動しない

0 投票する
1 に答える
2586 参照

directory - メイン シェルのメイクファイルのディレクトリを変更する

私のビルドシステムには次のシナリオがあります。

1. src ディレクトリ内の 1000 個の makefile
2. 1000 個のすべての makefile に含まれる common.make ファイルがあります
3. ソース ディレクトリからオブジェクト ディレクトリ内の makefile とソースのリンクが作成されました。したがって、makefile 内のすべての makefile とさらに多くのスクリプトは、ビルド ディレクトリに存在するような方法で記述されます。 
4. obj ディレクトリは動的な場所です。
5. これで、すべてのリンクを削除しました。オブジェクト ディレクトリにリンクがなくなりました。
6. 実行前にオブジェクト ディレクトリ (動的ディレクトリ名) を変更する予定のソース ディレクトリ内のすべてのメイクファイルを実行したいと考えています。(変更するディレクトリがわからないため、ここでは make -C を使用できません)。ソースを見つけるために VPATH を設定できます。
7. common.make を使ってディレクトリを動的に変更したいのですが、common.make で行った cd, $(shell cd ...) がメインの Makefile に反映されません。
8. これを行わないと、1000 個のメイクファイルすべてを変更することになります。私はこれをしたくありません。

最善の方法を教えてください。簡単に言えば、1000 個のメイクファイルを実行する前に (common.make を介して) ディレクトリを変更したいのですが、 

common.make が次のことを行うことを期待しています。

1) srcpath = 現在のパスを保存します (現在のパスはソース ディレクトリです)
2) 出力ディレクトリに変更します (ディレクトリ名はここでは動的です)。
3) VPATH=srcpath を設定します。 
4) これで、ソース ディレクトリ内のすべての makefile で common.make を使用してコンパイルし、バイナリとオブジェクトを出力ディレクトリに格納できます。

# これはサンプルの Makefile の 1 つです。このファイルを短縮しました。すべてのメイクファイルが、SRCS、CMDSRCS などの同じ名前を使用しているわけではありません。それは違うでしょう。
# これは既存のメイクファイルです。ソースの場所 /home/user/project/src/mod1/lib/resmgr>make BD=100.
# /home/user/project/build/swout100/mod1/lib/resmgr/*への出力が必要です 。common.make (共通メイク) は、ここで引数 BD を検証する場合があります。BD=101 は使用できません。
# ユーザーに強制的に make -C /home/user/project/build/swout100/mod1/lib/resmgr を実行させることができます (ここでは BD 検証は行われません。ユーザーは移動先のディレクトリを知っている必要があります)。 
# common.make はユーティリティ makefile
TOPDIR = ../../..
MAKEDIR = $(TOPDIR)/makeとしてユーザーを助けると思います
include $(MAKEDIR)/common.make # ほとんどのメイクファイルに含まれています。これは、一般的なメイクファイルとして扱うことができます。common.make の インクルード
を           変​​更することを考え
まし た
....... o) CMDHNDLR = resmgrcmd #... ここに CFLAGS とここにライブラリ フラグ MDSRC = main.c SRCS = resmgr.c \ # ここにその他のソース ファイル HDRS = resmgr.h MDOBJ = $(MDSRC:.c=.o) OBJS = $(SRCS:.c=.o) $(OBJS) $(MDOBJ) $(CMDOBJS): $(HDRS) DEPENDSRCS = $(MDSRC) $(SRCS) $(CMDRCS)













ST_LIBS = $(DEVOSLIBSRC)/apixdr/libapixdr.a
$(TARGET): $(MDOBJ) $(OBJS)
    $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(ST_LIBS)
$(CMDHNDLR ): $(CMDOBJS)
    $(CC) $(LDFLAGS) -o $@ $^ $(DEVOSLIBS) $(IPCLIB) $(KILIB) $(MIAUXLIB) \
            $(RESMGRLIB) $(RBACLIB)
インストール:: インストール-サーバー
インストール サーバー: $(TARGET) $(TARGET).options $(DEVOSSBINDIR) $(DEVOSCONFDIR)
    $(INSTALL) -m 755 $(TARGET) $(DEVOSSBINDIR)
インストール コマンド: $(DEVOSBINDIR)/$(CMDHNDLR ) \
    install-admin-cmds install-user-cmds
clean::
    $(RM) $(OBJS) $(TARGET) $(SCRIPTS) $(RAWMAN) $(CMDHNDLR) $(ZIPMAN)

0 投票する
2 に答える
2658 参照

code-generation - Automake、生成されたソース ファイル、および VPATH ビルド

automake で VPATH ビルドを行っています。私は現在、SWIG で生成されたソースも使用しています。Makefile.am次のようなルールがあります。

その後、ファイルは後で使用されます。

のときに正常に動作し$builddir == $srcdirます。しかし、VPATH ビルド (例: mkdir build; cd build; ../configure; make) を実行すると、見つからないというエラー メッセージが表示されますwhatever.cpp

生成されたソース ファイルは、またはどちらに移動します$builddir$srcdir? (おそらくだと思います$builddir。)

生成されたファイルを適切な場所に配置するには、依存関係とルールをどのように指定する必要がありますか?

0 投票する
0 に答える
368 参照

c - メイクファイルで vpath を使用する際の問題

たくさんの src ファイル (すべて 1 つのフォルダー内) と .h ファイルがさまざまなフォルダーに分散していました。メイクファイルを使用すると、.c ファイルを正常にビルドできました。

ここで、2 つの .c ファイルを導入しましたが、makefile とは別のフォルダーにあり、ビルドを成功させることができません。オンラインで調べたところ、これには vpath を使用する必要があることがわかりました。しかし、vpath を使用した後でも、新しいフォルダーに .c ファイルを作成する際にエラーが発生します。

1) 以下の make ファイルで、後で追加された新しい .c ファイルは fbpath.c と stream.c でした。2) これらの .c ファイルが参照するインクルード ファイルの相対パスも含めます。3) 次に、.c ファイルが存在する場所を指すように VPATH を追加しました。

私が得るエラーは

fbpath.c:30:24: 致命的なエラー: config.h: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。

しかし、config.h ファイルは INC に非常に多く存在します。フルパスも提供しました。

誰かが私がした間違いを教えてください。

ありがとう

ここに私のメイクファイルがあります

0 投票する
1 に答える
264 参照

makefile - ファイル vpath を置換しないようにする

私はmakeファイルを作ることにほとんど問題はありません.これはコードです:

make を実行しようとすると、次のエラーが発生します。

parser.o が正しいパスに置き換えられない理由がわかりません。自動変数を使用しました

0 投票する
1 に答える
301 参照

makefile - Makefile: Makefile 変数の割り当てに VPATH 変数を適用できますか?

練習用に簡単なメイクファイルを書いてみました。

2 つのディレクトリがあります。1.srcs( .c)、2.include( .h)

すべての .c ファイルを含む SRCS 変数を定義しようとします。

現在のディレクトリとsrcsディレクトリにあります。

以下は私のMakefileです

現在の/ srcディレクトリをVPATHとして指定して検索します

現在のディレクトリと current/srcs 内のすべての *.c ファイルですが、

/srcs ディレクトリに *.c ファイルが見つかりません。

Makefileで変数を定義するときに、makeがVPATHを使用できない可能性があります

右?それが正しければ、より良いアプローチを教えてください:)

ありがとう。

0 投票する
1 に答える
497 参照

makefile - vpath の V は何の略ですか?

makefileのVPATH変数は、検索パスを示すために使用されます。しかし、その中の「V」は正確には何を表しているのでしょうか?

make 変数 VPATH の値は、make が検索するディレクトリのリストを指定します。ほとんどの場合、ディレクトリには、現在のディレクトリにない前提条件ファイルが含まれていると予想されます。ただし、make はルールの前提条件とターゲットの両方の検索リストとして VPATH を使用します。

0 投票する
1 に答える
332 参照

makefile - make 'vpath' ディレクティブ、なぜこの前提条件に十分ではないのですか?

次の makefile の例は、vpathオブジェクト ファイルとソース ファイルの検索に使用して、期待どおりに機能します。しかし、あるオブジェクト ファイルが別のオブジェクト ファイルに依存していることを make に伝える最後の行では$(objd)/、前提条件ファイルのディレクトリを指定する必要があります。そうしないと、エラーが発生します (コードの下のエラー メッセージを参照)。最後の行のvpathディレクティブが十分でないのはなぜですか?

つまり、最後の行を次のように変更します。

エラーが発生します:


ディレクトリ指定なしで、この形式の最後の行でも編集できます。

0 投票する
0 に答える
81 参照

makefile - Makefile VPath 強制前提条件のコンパイル

一連のオブジェクト ファイルを共有オブジェクトにリンクしようとしています。VPATH を使用して、別のディレクトリにあるいくつかのオブジェクト ファイルの場所を指定します。.o ファイルがそのディレクトリに存在する場合、g++ が .o ファイルを見つけられないというエラー メッセージが表示されます。他のディレクトリのオブジェクト ファイルを削除すると、GNU Make / GCC は、VPATH で指定された他のディレクトリの .c から現在のディレクトリの .o をコンパイルします。では、オブジェクト ファイルが VPATH で指定された別のディレクトリに存在する場合でも、前提条件のオブジェクト ファイルが常に現在のディレクトリにビルドされるように、makefile を変更するにはどうすればよいでしょうか。

これが私の主なmakeルールです: