問題タブ [scons]
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.
unit-testing - scons - すべてのターゲットがビルドされた後に何かを実行する方法
私は最近、中規模の C++ プロジェクト用のマルチプラットフォーム ビルド フレームワークを実装するために scons を手に入れました。ビルドは、すべての最後に呼び出す必要がある一連の単体テストを生成します。どうやってそのようなことを達成するのですか?
たとえば、私のトップレベルのsconstructでは、
ただし、各サブディレクトリには単体テストがありますが、その中にビルドされた dll と実行可能ファイルの間に依存関係があるため、すべてのサブディレクトリがビルドおよびインストールされるまでテストの実行を保持したいと考えています (つまり、env.Install を使用します)。 )。
ビルドされたテストを反復処理して実行するには、どこにループを記述すればよいですか? このループの直後に配置しようとしましたが、scons では実行順序を制御できないため、必要な前に実行されてしまいます。
scons初心者を助けてください。:)
ありがとう、
iphone - xcodebuild を使用せずに、コマンド ラインから iPhone アプリケーションをビルドする
xcodebuild
Xcodeプロジェクトを使用せずにiPhoneアプリケーションを手動で構築することは可能ですか?
アイデアは、Xcode プロジェクトを作成せずに SCons を使用してアプリケーションを構築することです。使用できるコマンド ライン ツールがあることは知っていますがcodesign
、Xcode ビルド プロセスのリバース エンジニアリングを開始する前に、これを経験したことがある、または以前に実行したことがある人がいるかどうか疑問に思っていました。
scons - Scons がターゲットが読み取り専用であることを気にするのはなぜですか? また、それを無視するように説得するにはどうすればよいですか?
特に難しいプロジェクト レイアウトのデバッグ ビルドをまとめようとしています。私がしなければならないことの 1 つは、最近ビルドされた DLL を、Source Safe の管理下にある既存の DLL の上にコピーすることです。したがって、読み取り専用です。これを管理するために Scons を使用することを望んでいましたが、ターゲットが読み取り専用の場合、Scons はエラーになります。私のコマンドの一部は、読み取り可能に設定することですが、scons が最初にエラーになるため、私のコマンドは実行されません。とにかくこの動作をオーバーライドする方法はありますか?
これがデモンストレーションです。ご覧のとおり、読み取り専用ビットが設定されている場合、「読み取り専用ビットをオフにする」コマンドは実行されません。
アップデート
OK - 実行中の Scons をステップ実行して、これを理解しました。Scons はターゲットをビルドする前にターゲットを削除するようです (FS.py を参照してください。scons ドキュメント ページのこの_rmv_existing
ページも参照してください)。この問題が発生した場合は、ターゲットを「Precious」としてマークできますが、「-c」を使用すると問題が発生します。
ここには本当に良い解決策はありません。しかたがない。
python - SConscript自体の依存関係の表現
SConsプロジェクトを次のように設定しています。
ビルド時に、SConscriptはビルドディレクトリにコピーされますが、「構成」モジュールはコピーされません。通常、Depends()
関数(eg Depends(program, object_files)
)を使用してファイルの依存関係を表現します。ただし、この場合、SConscriptファイル自体が依存関係の「ターゲット」です。
これをSConscriptでどのように表現しますか?
python - SConscript からのビルド ディレクトリの決定
構築のためにビルド ディレクトリ ( ) にコピーされている SConscript がありvariant_dir = ...
ます。依存関係を表現できない場合の回避策として、いくつかの追加ファイルをビルド ディレクトリにコピーしようとしています。
SConscript 内で現在のビルド ディレクトリを確認するにはどうすればよいですか?
たとえば、次のレイアウトでは、内部の SConscript ファイルをmy_build_directory
「build/something」として設定する必要があります。
scons - scons 階層ビルド: ビルダーの伝播
下位レベルで静的オブジェクトまたは共有オブジェクトを構築できるように、構築環境を調整できる必要があります。現在、私は次のアプローチを思いつきました:
トップレベルの SConstruct:
下位レベルの SConstructs では、それらを名前で呼び出します。
ただし、このソリューションがどれほど健全かはわかりません。同じ機能を実現するためのより簡単で適切な方法はありますか?
前もって感謝します。
c++ - プラットフォーム固有のプロジェクト ファイルを使用するか、プロジェクト ジェネレーターを使用して自動化をビルドしますか?
sln
Visual Studio 、vcproj
、vcxproj
ファイル、またはXCode
xcodeproj
OS X のプロジェクトなど、プラットフォーム固有のプロジェクト ファイルを生成できるビルド システムがいくつかあります。
そのうちの 1 つが CMake ですが、これのサポートは非常に限定的でバグが多く、新しいバージョン (VS 2010 など) で更新し続けることが非常に難しいことがわかりました。
また、少なくとも CMake は Visual Studio のプロパティ ページのサポートを欠いているため、すべてのプロジェクトのコード分析の有効化/無効化など、プロジェクト全体の構成の管理と変更が難しくなっています。
上記の問題の回避策は、プラットフォームごとに手動でプロジェクト ファイルを作成することです。私の場合は 2 つしかありませんが、それ以上の数があってもそれほど大きくはなりません。
プラットフォーム固有のビルド コマンドを一般的なビルド自動化スクリプトに呼び出すのは非常に簡単です。たとえばwaf
、独自のビルド部分を使用せずに、いくつかのプロジェクトでこれを自動化するために (Python) を使用しました。
プロジェクト ジェネレーターの修復/保守を試みるか、プロジェクト ファイルを分離して保持するか、どちらを選択するかを確認したいと思います。
c - コンパイラの種類に応じて、C コンパイラの SConstruct でオプションを設定するにはどうすればよいですか?
C コンパイラの追加オプションを設定する必要があります。たとえば、コンパイラの種類に応じて、すべての警告をオンにするフラグを追加します。たとえば、MSVCの場合は使用する必要があります
しかし、mingw(gcc)の場合、次を使用する必要があります:
どうすればsconsの方法でこれを行うことができますか?
scons - scons ベースのソースのバンドル
すべてのビルドのニーズに SCons を使用しており、ライブラリをオープン ソースで配布したいと考えています。
現在、ほとんどのソフトウェアはビルド メカニズムとして ./configure、make、および make install を使用しています。
次のソリューションがあります。
- そのままバンドルするだけで、scons をビルドする必要があります。
- scons を呼び出すだけのダミーの configure と makefile を追加します。
- autoconf と makefile を追加します。
ビルドに python と scons を必要とするソフトウェアを入手することはどのように認識されていますか?
scons - scons:1つのファイルのビルドオプションをオーバーライドする
簡単な質問ですが、答えはわかりません。
インクルードが含まれるビルドscons
があるとします。代わりにwithをオーバーライドしたいファイルが1つあります。どうすればこれをsconsで行うことができますか?CCFLAGS
-O1
needsOptimization.cpp
-O1
-O2
更新:これは私がbialixの答えに基づいてやったことです:
私のSConscriptファイル:
以前、このファイルは次のとおりでした。