問題タブ [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.
makefile - makeでvpathマッチング後に絶対パスを取得するにはどうすればよいですか?
いくつかのプロパティに応じてvpathを設定し、ソースファイルのリストを1つの変数に生成するmakefileがあります。何もコンパイルせずにmakefileを実行する必要があり(コンパイルは実際には別のmakefileによって処理されます)、vpath設定に応じてファイル名が一致する実際のファイルを確認するだけです。
makefile - VPATHを使用したMakefileのトリックとインクルード
私はmakeファイルとVPATH変数で遊んでいます。基本的に、私はいくつかの異なる場所(VPATHで指定)からソースファイルを取得し、必要な.oファイルのリストを使用して現在のディレクトリにコンパイルします。
これまでのところ、依存関係情報を「.depend」というファイルに生成し、それを含めています。Gnumakeは、これまでに定義されたルールを使用して、含まれているファイルが存在しない場合は作成しようとします。これで問題ありません。基本的に、私のmakefileは次のようになります。
さて、本当の質問ですが、.dependファイルの生成をなんらかの方法で抑制できますか?私は現在、クリアケース環境で作業しています->遅いので、依存関係情報を更新するときに、もう少し制御できるようにしたいと思います。
makeを実行する前に.dependファイルにアクセスするスクリプトで物事をラップすることができるので(したがって、どのソースファイルよりも新しいものにする)、多かれ少なかれ学術的な演習ですが、どういうわけか私ができるかどうかを知ることは興味深いです'pure'makeを使用して抑制します。
VPATH解決を行うために変数に依存しているため、ソースファイルへの依存関係を削除できません(つまり、単にを使用します.depend:
) 。$^
ディレクティブが更新された結果として依存関係のみを更新する方法があれば#include
、もちろんそれはさらに良いでしょう..しかし、私はそのために息を止めていません.. :)
makefile - GNU make と VPATH を使用して依存関係を探すときは、現在のディレクトリを最後に検索します
これは、GNU Make 依存関係の解決の問題です。
私の問題は、ソース ファイルをリモート ファイル サーバーからスクラッチ ディスクにコピーすることです (これにより、ビルド プロセスが 50% 高速化されます)。ファイルのコピーに失敗した場合は、ファイル サーバーからソース ファイルを使用したいと考えています。
私は vpath メカニズムを使用しようとしましたが、問題は、私が理解している限り、デフォルトで make が現在のディレクトリでソース ファイルの検索を開始し、そこにファイルが見つからない場合にのみ、ディレクトリを調べることです。 vpath とともにリストされます。
現在のディレクトリを調べる前に、最初に vpath ディレクトリを調べることは可能ですか? それとも、vpath ディレクトリだけを調べますか (そして、現在のディレクトリを vpath に明示的かつ動的に追加しますか)?
私が考えることができる唯一の方法は、ディレクトリを一時的に変更して、make が常にソース ファイルを見つけられないようにすることです。
makefile - メイクと VPATH。ソース ファイルが望ましくない場所に置かれているのはなぜですか?
makeでコンパイルしようとしています。src と altsrc の 2 つのディレクトリにソースがあります。最初に altsrc でソース ファイルを検索し、次に src を検索するようにします。オブジェクトをディレクトリobsに入れたいです。私の Makefile の関連部分は次のようになります: VPATH=altsrc:src:obj
この Makefile は実際にはコードを正常にコンパイルしますが、非常に不快な副作用が 1 つあります。それは、各ソース ファイルを見つけて (そしてたくさんあります)、それらを altsrc または srcから make を実行しているディレクトリにコピーすることです。これは本当に厄介で、後で混乱を招きます。これが VPATH マクロの影響であると述べているドキュメントはどこにも見つかりませんでした。誰でもこれを解決する方法を教えてもらえますか? ありがとう。
build - ターゲットをlibファイルに依存させる方法はありますが、$ ^から除外します(VPATHが含まれます)?
次の構造を想像してください。
ではtests/
、フォルダーcommon/
には、データを生成したり、ログに記録されたファイルなどからデータを読み取ったりするいくつかのソース ファイルが含まれており、これらはすべてのテスト間で共有されます。したがって、各テストには 1 つのファイルしかありません。main.c
(現在)。各テストのMakefile
は次のようになります。
最初common/
は各テストでファイルをコピーしましたが、すべて問題ありませんでしたが、それらを入れてcommon/
使用したVPATH
ので、問題に直面しています。
いくつかの行を説明しましょう:
ご想像のとおり、common/*.o
ファイルはこのフォルダーに$(LD)
ないため、 はそれらを見つけることができません。一方make
、与えられたVPATH = ../common
はそれらを見つけるのに問題はありません。を削除できれば../../lib/libname.a
、$^
オブジェクト ファイルへの正しいパスを指定できます。
ただし、lib ファイルへの依存関係を削除するとmake
、最上位にいるときに、lib 自体のみが更新されている場合、テストは更新されません。
したがって、私の質問は、別のファイル (lib ファイル) への依存関係があることをどのように確認できますか?make
VPATH
依存関係を削除することを考えました。Makefile
そのビルドlibname.a
では、ライブラリが作成された後に、Makefile
テストの s にそれらTARGET
の sを削除するように指示するコマンドを追加します。
これにより$(LD)
、それらを再度作成する必要があります。Makefile
ただし、このソリューションは、関係を混乱させる傾向があります。Makefile
lib をビルドするのは、テストがあるかどうかとは無関係です。
私は多くのビルドとテストを行っています。そのため、依存関係を完全なものにしようとしています。これによりmake
、すべてを正しくビルドするために可能な限り最小限のアクションが必要になります。毎回クリーンアップして再構築するという解決策は選択肢ではありません。
また、この構文も認識しています。この構文は、.lib ファイル ディレクトリを に渡すgcc
代わりに、-Lpath/to/lib -lname
. ただし、それが良いアイデアかどうかはわかりません(つまり-L
、とのリンクを常に見ていましたが、ライブラリファイルを直接渡すときに不利な点があるかどうかはわかりません)
ところで、私がひどく間違ったことをしている場合、または自分でそれを難しくしている場合は、どうすれば正しく実行できるか教えてください.
makefile - Makefile ルールで VPATH が機能しない
SWIG を使用して JNI を使用して Java の関数をラップする C 共有ライブラリを構築しようとする別のルールを Makefile に追加しました。
追加のルールは次のようになります (基本的に SWIG Java の例の 1 つから引用)
私が抱えている問題は、VPATH が *.c ファイルで動作しないように見えることです。
このルールにより、すべての .c ファイルが、各 .o ファイルのコンパイルのために gcc を個別に呼び出すのではなく、gcc への 1 回の呼び出しとしてコンパイルされることに気付きました。
JNI を使用しないコンパイルの以前のルールは次のようになります。
これらはVPATHで問題なく動作します
私の VPATH ステートメントは次のようになります。
android-ndk - ndk-build での VPATH の使用
現在、共有ライブラリを構築できるようにファイルに移植しようとしMakefile
ていますAndroid.mk
ndk-build
ただし、VPATHに何かをさせることはできないようです。
例えば
正常に動作しますが、ディレクトリ部分を取り除き、代わりに VPATH を指定しようとしてもうまくいきません。
no such file or directory error
実行時に取得しますndk-build
Android.mk ファイルで標準の GNU Make 構文を使用できるはずだと思うのは正しいですか? これが機能しない理由がわからない...
autoconf - autoconf: AS_INIT_GENERATED を使用して、サブディレクトリにスクリプトを生成します
特に VPATH ビルドが尊重されるようにAS_INIT_GENERATE
、スクリプトと同じディレクトリにないスクリプトを生成するにはどうすればよいですか?configure
たとえば、次をconfigure.ac
含むファイルの場合
コマンドの実行
エラーメッセージが表示されます
createsrc
を呼び出す前にディレクトリが存在することを確認する必要があると思いますか、それともすべて間違っているのでしょうか?AS_INIT_GENERATE
src/file.sh
makefile - vpathの問題-私が想定したものが得られない
私はvpathを次のように設定しています:
作成するオブジェクトファイルのリストを取得したい場合、次の場合は機能しませんか?
そうではない。コマンドを実行してもファイルのリストが表示されません
次の場合にのみ、オブジェクトファイルのリストが表示されます。
説明はありますか?
c++ - vpaths を使用する場合は 2 回「作成」する必要があります
プログラミングを始めて2年ほどで、ようやく「コンソールから抜け出す」ことになりましたが、そうするうちにIDEからも独立したいと思い、makeを学んでいましたが、これは、「vpath」に関する答えが見つからないように見える問題です
ここに私のメイクファイルがあります:
そして、初めてmakeを使用すると、次の結果が得られます。
そして、プログラムをリンクさせるために、もう一度 make を使用する必要があります。何故ですか ?「vpaths」を使用しないでください。また、これは2番目のmakeで得られるものです。
(成功)