問題タブ [build-tools]
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.
build - Jamでディレクトリ間の依存関係を定義する
何年にもわたってmakeを使用した後、プロジェクトでjam(実際にはftjam)を使い始めました。
プロジェクトワークスペースには、次の2つのディレクトリがあります。
src
実行可能ファイルとライブラリを構築する場所test
私のテストプログラムはどこにありますか
テストプログラムへの依存関係を設定して、コンパイルするたびにライブラリも再コンパイルされるようにしようとしています(必要な場合)。
それを行う方法について何か提案はありますか?
c++ - sconsを使用して、事前に構築されたライブラリにどのようにリンクしますか?
私は最近、sconsを使用していくつかの小さなクロスプラットフォームプロジェクトを構築し始めました。これらのプロジェクトの1つは、事前に構築された静的ライブラリとリンクする必要があります...これはどのように行われますか?
makeでは、Windowsに「link / LIBPATH:whereeverlibstxxl.lib」を追加し、unixに「stxxl.a」を追加するだけです。
build - bjam でスペースを含むファイル名を操作するにはどうすればよいですか?
Jamfile に外部ライブラリを記述する必要があります。ライブラリの場所は環境変数に保持されます。
Jamfile のスニペットは次のとおりです。
- をちょきちょきと切る -
- スピン -
「C:\Program」が見つからないという bjam の鳴き声。Jamfile で lib ルール呼び出しを取得して、スペースが埋め込まれたパスを受け入れるにはどうすればよいですか?
python - インストールせずに卵としてパッケージ化されたPython拡張モジュールをロード可能にするにはどうすればよいですか?
私はビルド スクリプトを素晴らしい Waf ツールに基づいて作り直している最中です(以前から SCons を使用していましたが、あまりにも遅すぎます) 。
とにかく、次の状況に遭遇しましたが、解決策が見つかりません。
- 以前にビルドされたいくつかの卵ファイルに依存する製品があります。
- ビルド プロセスの一部としてPyInstallerを使用して製品をパッケージ化しようとしています。
- 最初に依存関係を構築します。
- 次に、PyInstaller を実行して、ビルドした卵に依存する製品をパッケージ化します。パッケージ化プロセスの一環として、これらの卵ファイルをロードできるようにするには、PyInstaller が必要です。
これは簡単に聞こえます: どうあるPYTHONPATH
べきかを考え出し、変数を正しく設定するコピーを作成し、以前に構成した環境を env 引数として渡してsys.environ
PyInstaller スクリプトを呼び出します。subprocess.Popen
問題は、PYTHONPATH
追加する卵が zipsafe としてパッケージ化された拡張モジュールである場合、設定だけでは十分ではないように思われることです。この場合、組み込みライブラリをインポートできないことがわかります。
卵を解凍すると (ディレクトリの名前を .egg に変更)、それ以上の設定なしで卵をインポートできますが、この場合はこれが必要なわけではありません。
次のようにして、卵をサブシェルからインポートすることもできます。
PYTHONPATH
インポートしたい卵を含むディレクトリに設定します(卵自体のパスではありません)- Python シェルをロードし
pkg_resources.require
、卵を見つけるために使用します。
これが完了すると、卵は通常どおりロードされます。繰り返しますが、これは実用的ではありません。なぜなら、これらの卵をオフからインポートする準備ができている方法で Python シェルを実行できる必要があるからです。
汚いオプションは、実際のターゲット スクリプトを呼び出す前に上記のアクションを実行するラッパー スクリプトを出力することですが、これは間違っているように思われます。これを行うためのより良い方法があるはずです。
java - build.xml を Build.java に置き換える - ビルド システムとして Java と Ant ライブラリを使用する
私は、Groovy ベースの Ant に代わるものに幻滅しました。AntBuilder は Eclipse 内からは機能しません。Eclipse 用の Groovy プラグインは期待外れで、Gradle はまだ準備が整っていません。
Ant のドキュメントには、「Ant タスクを Ant 外で使用する」というタイトルのセクションがあり、Java コードから Ant ライブラリを使用する方法を紹介しています。ここに別の例があります:
http://www.mail-archive.com/dev@ant.apache.org/msg16310.html
理論的には、build.xml を Build.java に置き換えるのは簡単に思えます。Ant のドキュメントは、私が発見しなければならないいくつかの文書化されていない依存関係を示唆しています (Java 内から Ant を使用するという観点からは文書化されていません)。
Ant スクリプトに対する失望のレベルを考えると、なぜこれまで行われなかったのか不思議に思います。おそらく、それは良いビルドシステムを持っていますが、そうではありません。
Ant ライブラリを使用して Java でビルド ファイルを作成しようとした人はいますか?
c++ - C++ 開発者ツール: ダーク エリア
C++ 標準委員会は、その複雑で強力な機能を定義し、C との下位互換性を維持するために懸命に取り組んでいますが、私の個人的な経験では、ツールがないために C++ でのプログラミングの多くの側面が面倒であることがわかりました。
たとえば、私は最近、いくつかの C++ コードをリファクタリングしようとしました。多くの shared_ptr を T& に置き換えて、大規模なライブラリ内で不要なポインターの使用を削除しました。そこにあるリファクタリングツールのどれもこれを安全に行うのに役立たないので、私はほとんどすべてのリファクタリングを手動で実行しなければなりませんでした。
デバッガーを使用して STL データ構造を処理することは、見知らぬ人が同意しないときに電話番号をかき集めるようなものです。
あなたの経験では、C++ に欠けている重要な開発者ツールは何ですか?
php - PHPビルドシステム
継続的な統合と単体テストのために、Cruise Control の上で実行されるPHPUnderControlを使用しています。また、PHPDocumentor を実行して phpdoc を生成するようにセットアップし、PHP Code Sniffer を実行してコーディング標準を強制します。しかし今、同じサーバー (Ubuntu) に何かをセットアップして、リモート サーバーへの展開を容易にしたいと考えています。私はすでにセットアップしているので、ビルドが成功するたびに、トランクからサーバーのプロジェクトフォルダー内のディレクトリにSVNエクスポートが行われます。
私は、構成済みのリモート サーバーに SSH 接続し、最新のエクスポートを tarball し、それをコピーし、untar し、移行を実行する小さなカスタム PHP スクリプトを作成することを考えていました。このような PHP スクリプトは、最終的に複数のサーバーへのスケーリングを開始する必要がない限り、最初はそれほど難しくありません。PhingやFabricなどのシステムがあることは知っています。
私の質問は、誰かがこれらの経験があり、長所と短所を提供できるかどうかです。私は自分のサーバーに Phing のセットアップを開始しました。次に Fabric を試してみますが、それらをより広範囲に使用したり、拡張する必要があった場合は、フィードバックを提供できるかどうか疑問に思っていました.
database - ETLツールとビルドツール
私はソフトウェア自動ビルドツール(Automated Build Studioなど)に精通しています。今、私はETLツールを見ています。
私の頭に浮かぶのは、ソフトウェアビルドツールを使用することで、ETLツールでできることは何でもできるということです。ETLツールは、データの読み込みと操作に合わせて調整されており、そのために多くのスクリプトが必要になります。一方、ソフトウェアビルドツールは、任意の形式のデータを任意の形式に抽出、変換、およびロードするためのスクリプトの作成など、あらゆるジョブを実行するのに十分な汎用性を備えています。
私は正しいですか?
java - antを使用してクラスパスに複数のjarを含めるにはどうすればよいですか?
「lib」フォルダー内の3つのjarファイルに依存する「src」フォルダー内に多数の.javaファイルがあります。次のbuild.xmlファイルがあります。
これは正常にコンパイルされますが、実行しようとすると、
"java.lang.NoClassDefFoundError:javax / jms / Destination"
ただし、Eclipseを使用してビルドパスにjarを含めると、このプログラムは正常に実行およびコンパイルされます。
編集:それで、私はjarファイルをコンパイルされたクラスがあるフォルダーにコピーしました。mainメソッドを持つクラスはNDriver.classです。私が試してみると:
java -classpath ./geronimo-jms_1.1_spec-1.1.1.jar:./activemq-core-5.3.0.jar:./activemq-all-5.1-SNAPSHOT.jar NDriver
これは与える:
スレッド「メイン」の例外java.lang.NoClassDefFoundError:NDriver
助けていただければ幸いです。
makefile - Make の人気の理由と代替案
(makefile ジェネレーター ツールの有無にかかわらず) 古い Make をビルド ツールとして目立たせるには、どのような力が働いているのでしょうか? 代替案が広く採用されるのを妨げているのは、代替案の欠陥なのか、それとも宣伝が不十分なのか、それとも Make の何かがそれを維持しているのでしょうか?
Make には多くの弱点があり、大規模なプロジェクトに対処するのが困難ですが (たとえば、http ://freshmeat.net/articles/what-is-wrong-with-make を参照)、 Sconsなどの新しく改良された代替手段よりも、まだ広く使用されているようです。ジャム、レーキ、クックなど。
代替手段には測定可能な利点がありますか?それとも、「市場シェア」は主にチーム リーダーの意見と経験によるものですか?