問題タブ [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.
command-line - SCons:-cを無視するGCC
MinGWベースのGCCクロスコンパイラーを使用して、ビルドシステムとしてSConsを使用するプロジェクトをコンパイルしています。
Pythonはネイティブ2.6.2バージョンであり、MinGW(またはCygwin)用に特別にコンパイルされていません。
ただし、ビルドで問題が発生しています。
CFLAGSに-cを追加すると、「main.obj-c」というコンパイル済みオブジェクトが得られます(objと-cの間にスペースがあります)。
何が起こっているのか誰かが知っていますか?これを解決するために私にできることはありますか?
environment-variables - Scratchbox の Scons: g++ が見つかりません
Make ベースのコードベースで sbox を問題なく使用しています。現在、私は scons ベースのコードベースを使用しており、奇妙な問題が発生しています。
Scratchbox 内で、scons が g++ を見つけられないようです。たとえば、次のようなことを実行しようとします。
o こんにちは hello.c
実行する必要がある場合:
g++ -o こんにちは hello.c
したがって、おそらくその g++ 文字列変数は空です。g++ が存在し、PATH に - 「どの g++」が /scratchbox/compilers/bin/g++ を生成します。
同じソースがスクラッチボックスの外でも問題なくビルドされるため、scons やコードベースで問題になることはありません。Scratchbox が機能する場合、scratchbox の外部で設定される特別な環境変数はありません。
/usr/bin/g++ を /scratchbox/compilers/bin/g++ にシンボリックにリンクすると、もう少し進んで (正しい見た目の g++ コマンドが生成されます)、実行すると次のようになります。
sb_gcc_wrapper (g++): /scratchbox/compilers/arm-linux-cs2007q3-51sb3/bin/sbox-arm-none-linux-gnueabi-g++: そのようなファイルまたはディレクトリはありません
リストされたファイルが存在します。
PATH には /scratchbox/compilers/bin、SBOX_REDIRECT_FROM_DIRS には /usr/bin、SBOX_REDIRECT_TO_DIRS には /scratchbox/compilers/bin が含まれているので、検索できるはずだと思います。
任意の提案をいただければ幸いです! ありがとう、レイ
編集:おそらく関連しています-sconsファイル内のフルパスを追加しない限り、pkg-configも見つかりません
build-process - SCons スクリプトの起動時間を最適化するには?
再構築する必要がないことを確認するだけで約 10 秒かかる SCons スクリプトがあります。これは、本質的にかなり小さなプロジェクトであるために非常に長く感じます。SConscript 自体の読み取りには 1 ~ 2 秒しかかかりません。ほとんどの時間は次の場所で費やされます。
ステップ。
scons
この時点で正確に何が行われているのかを知るにはどうすればよいですか? また、高速な SCons スクリプトを作成する上で、他に一般的なアドバイスはありますか?
scons - scons 環境設定
特定のファイルを使用してデフォルト環境をセットアップするように scons に指示する方法はありますか? 私は TI の DSP を使用していますが、コンパイラは cc とは別のものです。コンパイラの場所とデフォルトのフラグを定義する「環境ファイル」を 1 つ作成し、これを複数のプロジェクトで使用できるようにしたいと考えています。
助言がありますか?
scons - 代替ビルド ツールの scons ヘルプ
私は TI DSP 用のコンパイラを使用しているため、デフォルトの CC および LINK および AS ツールは意味がありません。以下は私のために働く SConstruct ファイルです。誰かがそれを改善するための提案を持っているかどうか疑問に思っています。いくつかの問題:
- どうにかして、.obj ファイルをソースの .c ファイルとは別のディレクトリに配置する必要があることを伝えたいと思います。(リンクステップのソースとコンパイル/リンクの依存関係を把握するために、どこを知る必要があります)これをコンパイラへの「-fr」および「-fs」引数と結び付けるとよいでしょう、しかし、私はそれを手動で行ってもかまいません。
- 以下の SConstruct ファイルにはいくつかのストック C ファイルがあり、すべて DSP2804x_ のプレフィックスで始まります。現在、scons はこれらの依存関係を把握できません。これは、.obj ファイルが同じディレクトリに存在することを期待しているためだと思いますが、コンパイラに "-fr" と "-fs" を使用すると、それらの .obj ファイルを意味します。 SConstruct ファイルと同じディレクトリになります。これを行うより良い方法はありますか?おそらく、これらの参照ファイルをローカル ディレクトリにコピーするビルド ステップが必要だと思います。変更した場合は、それらを使用するすべてのプロジェクトに変更を反映させたいと考えています。
はぁ....
scons - sconsにSconstructファイルをグローバル依存関係として使用するように強制する
Sconstructファイル自体が変更されたときにsconsにすべてのターゲットを強制的にビルドさせる方法はありますか?
(ビルド設定を変更した場合、以前にビルドされたファイルが新しいビルド設定と一致することを信頼できないためです)
scons - scons ルート ディレクトリの取得
カスタム ビルダーの一部として、2 つのプログラムを順番に実行する必要があります。
そのうちの 1 つは、私が立ち往生していて、絶対/相対パスを処理できないプログラムであるchdir=1
ため、ビルダーのオプションを使用して、そのアクションがターゲットと同じディレクトリで実行されるようにする必要があります。
tools
2 つ目は、プロジェクトのサブディレクトリにあるスクリプトです。SConstruct ファイルはプロジェクトのルートにあります。このスクリプトを実行するアクションを作成する必要がありますが、プロジェクトへの絶対パスも、ターゲットが配置されているtools
ディレクトリからスクリプトが配置されているサブディレクトリまでの相対パスもないため、問題が発生しています。どうにかしてプロジェクトのルート ディレクトリへの絶対パスを取得できれば、準備は万端です。`tools/myscript.bar' を連結するだけで済みます。
多かれ少なかれ、私が持っているものは次のとおりです。
問題は、「myscript.bar」が見つかるように、問題のアクションを次のように変更する必要があることです。
これはとても簡単に思えますが、方法がわかりません。
scons - scons: ビルド ディレクトリで glob をうまくプレイさせる
すべての .c ファイルをサブディレクトリにビルドしたいと考えています。私は次のようなことをするだろうと考えました:
src/foo/SConscript
内容:
src/SConscript
内容:
SConstruct
内容:
しかし、 scons がどのソースファイルを から にコピーする必要があるかを決定する前に、 がディレクトリで実行される[]
ため、出力されます。glob.glob()
build/foo
src/foo
build/foo
どうすればこの問題を解決できますか?
touch - sconsの「タッチ」に相当しますか?
scons は、ファイルの mod 時間ではなく MD5 ハッシュを使用して、依存関係を構築する必要があるかどうかを判断します。
これをデフォルトの動作にしたいです。しかし、ファイルを編集して別のものにする以外に、特定のファイルが古くなっていると強制的に仮定する方法はありますか (「タッチ」に相当します)。
編集:使用例:
バイナリ ファイル F は、ツール X を使用して別のファイル G を作成するために使用されます。何らかの理由でファイル G が変更された (破損したか、編集した)、またはツール X が変更されたため、ファイル G とその下流のすべてを再作成したい.
編集:これは時折の使用のみです。私はこれが常に起こることを望んでいません。また、事前に特定のファイルがわからない場合もあります。このため、特定のファイルをビルドするために SConscript/SConstruct ファイルを変更したくありません。私が望むのは、コマンドプロンプトでこれを行うことです:
これにより、scons は foobar.h に依存するすべてのファイルを強制的にビルドしますが、入力scons
するだけで、依存関係のチェックに MD5 ハッシュを使用して通常のビルドが実行されます。SConscript/SConstruct ファイルを事前に編集して、ビルド時間を大幅に増加させない方法があれば、これを許可します (カスタム Decider だと思います)。