問題タブ [waf]
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.
c++ - リンク時のwaf:「未定義の参照」エラー
だから、私は過去 2 時間、このコンパイラ エラーに頭を悩ませていたので、ここにコードを投稿して、誰かが私の間違いに光を当てることができるかどうかを確認しようと考えました。
無関係なビットをすべて取り除いて、最小限のプログラム (以下に示す) を残しました。これは、私が見る限り、コンパイルして実行する必要があります。私が来ても、メインのtestFuncへの呼び出しで何が間違っているのかがわからない場合、すべてがコンパイルされ、正常に実行されます。ただし、testFunc を呼び出すと、次のようになります。
ご覧のとおり、以下のコードははるかに大きなプロジェクトの一部としてビルドされています。コードの問題ではなく、そのビルド プロセスからエラーが発生している可能性があることは承知していますが、いずれにせよ、何か壁にぶつかっています。ここで何が起こっているかについての私の理解では。私はC++を学びながら学んでいますが、実を言うと、このコードを単独でコンパイルして「それは間違いなく機能するはずですが、機能しません」と言うことができるほどの経験はありません。このように提示します。
関連する可能性のある別のポイント:
abr-tools.cc から abr-helper.h で定義されたマクロを使用できますが、abr-tools.cc を abr-helper.h と同じフォルダーに配置し、「#include」abr-helper を使用すると問題が解決しません。 .h"'.
元のエラーは同じものでしたが、abr-helper.h で定義され、abr-tools.cc で使用されている他の多くのものに対するものでした。
どうぞよろしくお願いいたします。
abr-helper.h:
abr-helper.cc:
abr-tool.cc:
visual-c++ - WAF:MinGW(GCC)とMSVC2012の間の競合
私はちょうどWAFで悲惨に遭遇しました。私はMinGW-w64を排他的に使用してものを構築しています。しかし、最近、MSVC 2012をインストールしました。これは、MinGWでビルドするときに問題が発生する、さまざまな小さなユーティリティをビルドする必要がある場合があるためです。
WAFは、コンパイラーの選択をにハードコーディングするのwscript
ではなく、コマンドラインから選択することをお勧めします。これは非常に合理的に聞こえます。この場合、私はその哲学に賛成です。したがって、は次のwscript
ようになります(忘れてくださいboost
):
次に、コマンドラインに入力するだけです。
WindowsではデフォルトでWAFが最初にMSVCを優先するため、--check-cxx-compiler=gxx
WAFは最初にMinGWを検索するように強制されます。
注: MinGW-w64はに含まれていPATH
ますが、MSVCは含まれていませんが、レジストリが原因でWAFはそれを見つけることができます。
したがって、WAFは構成出力でこれを提供します(これはすべてがクールであることを意味します):
それからそれは構築を開始します、そして私が得るものはこの長いスパムです:
MSVCはこのビルドプロセスにどのように関与する必要がありますか?!- 何も思いつきません。しかしとにかく、ここに最も興味深い部分があります。推奨事項を破り、GCCをハードコーディングして:で私たちの選択にしましょうwscript
:
次に、次を呼び出します。
そして、構成出力を参照してください。
注:出力がどのように変化したかに気づきましたか?cxx_compiler
ツール(前のケースで使用)自体がctx.load('gxx')
舞台裏で呼び出されるため、これはすでに私には謎です。では、これら2つの出力は、これら2つのケースでどのように異なるのでしょうか。
次に、WAFの構築が開始され、次のようになります。
かっこいいでしょ?:)皆さんの考えを教えてください。うまくいけば、誰かがすでにこれに遭遇しています。
主演
WAF 1.7.8
MinGW-w64(GCC 4.7.2)
MSVC 2012
c++ - wafを使用してカスタムパスでライブラリ/ヘッダーを検索するには?
waf wscript ファイルでライブラリとヘッダーを検索しようとしています。一般に、次の場合に可能です。
これは、ライブラリとヘッダーがほとんど共通の場所にある Unix のようなシステムでは問題なく機能します。ただし、コマンドにカスタム検索パスを追加したいと考えていますcheck_cxx()
。特に、Windows システムのユーザーが、ファイル システムのどこかにあることが多いライブラリを検索できるようにするためです。
私はlibpath
議論を認識していますが、それはまだ何らかの形で満たされる必要があります.
また、waf でそのようなことを行うための他のアプローチ、ソリューション、または優れたプラクティスについても喜んでお聞きします。
c++ - C++プロジェクトのcmakeとwaf
私は同様のトピックを見つけました:Autotools、Cmake、Sconsの違いは何ですか?、しかし私の質問は少し他のものであり、答えも他のものである可能性があると思います。
wafが不安定である(APIの変更)、まだ本番の準備ができていないなどの記事をたくさん見つけました(ただし、これらの記事はすべて2〜3年前のものです)。
次の場合は、これらのビルドツールのどれを使用する必要がありますか。
- 大きなC++(11)プロジェクトを作成する-複雑なコンパイラーとしましょう
- LLVMで使用
- 柔軟性があり、使いやすいことを確認してください
- 十分に速くなることを確認してください
- すべての標準プラットフォームでコンパイルします(基本プラットフォームはLinuxですが、WindowsとMacOSXでもコンパイルしたいです)
たくさんの記事を読んで、Cmakeを見つけて、利用可能な「最高の」ツールをwafしましたが、期限がなく、あまり偏っていない比較(sconsの作者の比較など)を見つけるのは非常に困難です。それほど古くはありません。本当に
c++ - Waf - ソースが見つかりません: なし
を使用して 64 ビット アプリケーションをコンパイルしようとしていますWaf
が、wscript
次のエラーが返されます。
Source not found: None
.
これは、不適切なインデントまたは混合文字エンコーディングが原因である可能性があると聞いていますが、これは私にwscript
はありません。
これを引き起こしている可能性のある解決策/リードはありますか?
c++ - ld は Waf を使用している場合はライブラリを見つけられませんが、Waf を使用していない場合はライブラリを見つけることができます
私は自分のプロジェクトを構築しようとしています。libuv は既に as でコンパイルされ./libuv
ていますlibuv.a
(ライブラリへの相対パスは です./libuv/libuv.a
)。
clang を直接使用すると、次のように動作します。
しかし、Waf を使用してビルドすると、ld が libuv を見つけられないことを示すリンカー エラーが発生します。
私の wscript はかなり単純です。
Waf を使用していない場合はすべて正常に動作するのに、Waf を介して呼び出された場合は ld がライブラリを見つけられないのはなぜですか (-Wl,-Bstatic
フラグに関係していると思われますが、よくわかりません)。
python - setup.py から別のビルド ツールを呼び出す
コンパイルするために外部の依存関係とツールを必要とする中規模の C++/Python プロジェクトがあります。つまり、とりわけ Qt の MOC コンパイラとやり取りするためです。
このプロジェクトは、ライブラリ、ヘッダー ファイル、および Python 拡張機能を生成します。このプロジェクトを配布およびビルドするために、python setuptools を活用したいと思います。問題は、distutils からのビルド ビットが、プロジェクトのニーズを十分に満たしていないことです。並列ビルドや外部依存検出などが必要です。
質問: これを行う最善の方法は何ですか? たとえば、setup.py
ビルドをwafに委任するaを書くことは可能でしょうか? 実際の例 (要約されていても) はプラスです!
c++ - Waf構成へのインクルードパスの追加(C ++)
wscriptにインクルードパスを追加するにはどうすればよいですか?
次のように、任意のcppファイルごとにどのフォルダーからどのファイルを含めるかを宣言できることを知っています。
しかし、私はすべてのファイルごとにそれを設定したくありません。「グローバルインクルード」へのパスを追加して、ファイルがコンパイルされるたびにパスがインクルードされるようにします。
python - WAF スクリプトで変更されたファイルを処理する
変更されたすべてのファイルでビルド中に呼び出される wscript ファイルに WAF 関数を記述することは可能ですか?
次のことができるようになりたいです。
- すべての入力
.hpp
ファイルをカスタム Python 関数で処理し、ビルド フォルダーに出力します。そのようなファイルが変更された場合は、それを処理し、出力フォルダーでその定義を更新したいと考えています。 - すべての入力
.hpp
ファイルを外部スクリプトで処理し、結果をビルド フォルダーに出力します。
アップデート:
説明するには:変更されたファイルごとにfun1(file)
関数を実行して、ファイルを読み取り、変更し、変更されたバージョンを返し、宛先ディレクトリに出力する必要があります。
linux - パイプラインで前のコマンドを強制終了します
私はこのようなシミュレーションを実行しています
何かが起こったことwaf
を検出したらすぐに(たとえば、特定の行が読み取られた後)コマンドを強制終了するにはどうすればよいですか?filter.awk
変更できませwaf
んmyfile
。変更できるfilter.awk
のは、上記のコマンドだけです(明らかに)。
コメント後に更新:
waf
受信後に終了しませんSIGPIPE
(そうあるべきですか?)- クリーンアップが必要な子プロセスを生成します。
これは私自身の答え (そして挑戦)です。
@thatotherguyの答えと@Chrisの答えに取り組んだ後、私は少し単純化してこれを手に入れました:
残念ながら、ファイルを削除できませんでした。変数としてtmp
を渡す試みはすべて失敗しました。PID
受け入れられた答えは変更しませんが(本当に必要なときに機能したので)、もっと単純化できる人には+1します。