問題タブ [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.

0 投票する
1 に答える
619 参照

command-line - SCons:-cを無視するGCC

MinGWベースのGCCクロスコンパイラーを使用して、ビルドシステムとしてSConsを使用するプロジェクトをコンパイルしています。

Pythonはネイティブ2.6.2バージョンであり、MinGW(またはCygwin)用に特別にコンパイルされていません。

ただし、ビルドで問題が発生しています。

CFLAGSに-cを追加すると、「main.obj-c」というコンパイル済みオブジェクトが得られます(objと-cの間にスペースがあります)。

何が起こっているのか誰かが知っていますか?これを解決するために私にできることはありますか?

0 投票する
1 に答える
3503 参照

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も見つかりません

0 投票する
7 に答える
12416 参照

build-process - SCons スクリプトの起動時間を最適化するには?

再構築する必要がないことを確認するだけで約 10 秒かかる SCons スクリプトがあります。これは、本質的にかなり小さなプロジェクトであるために非常に長く感じます。SConscript 自体の読み取りには 1 ~ 2 秒しかかかりません。ほとんどの時間は次の場所で費やされます。

ステップ。

sconsこの時点で正確に何が行われているのかを知るにはどうすればよいですか? また、高速な SCons スクリプトを作成する上で、他に一般的なアドバイスはありますか?

0 投票する
2 に答える
1829 参照

scons - scons 環境設定

特定のファイルを使用してデフォルト環境をセットアップするように scons に指示する方法はありますか? 私は TI の DSP を使用していますが、コンパイラは cc とは別のものです。コンパイラの場所とデフォルトのフラグを定義する「環境ファイル」を 1 つ作成し、これを複数のプロジェクトで使用できるようにしたいと考えています。

助言がありますか?

0 投票する
1 に答える
597 参照

scons - 代替ビルド ツールの scons ヘルプ

私は TI DSP 用のコンパイラを使用しているため、デフォルトの CC および LINK および AS ツールは意味がありません。以下は私のために働く SConstruct ファイルです。誰かがそれを改善するための提案を持っているかどうか疑問に思っています。いくつかの問題:

  1. どうにかして、.obj ファイルをソースの .c ファイルとは別のディレクトリに配置する必要があることを伝えたいと思います。(リンクステップのソースとコンパイル/リンクの依存関係を把握するために、どこを知る必要があります)これをコンパイラへの「-fr」および「-fs」引数と結び付けるとよいでしょう、しかし、私はそれを手動で行ってもかまいません。
  2. 以下の SConstruct ファイルにはいくつかのストック C ファイルがあり、すべて DSP2804x_ のプレフィックスで始まります。現在、scons はこれらの依存関係を把握できません。これは、.obj ファイルが同じディレクトリに存在することを期待しているためだと思いますが、コンパイラに "-fr" と "-fs" を使用すると、それらの .obj ファイルを意味します。 SConstruct ファイルと同じディレクトリになります。これを行うより良い方法はありますか?おそらく、これらの参照ファイルをローカル ディレクトリにコピーするビルド ステップが必要だと思います。変更した場合は、それらを使用するすべてのプロジェクトに変更を反映させたいと考えています。

はぁ....

0 投票する
1 に答える
893 参照

scons - sconsにSconstructファイルをグローバル依存関係として使用するように強制する

Sconstructファイル自体が変更されたときにsconsにすべてのターゲットを強制的にビルドさせる方法はありますか?

(ビルド設定を変更した場合、以前にビルドされたファイルが新しいビルド設定と一致することを信頼できないためです)

0 投票する
2 に答える
7833 参照

scons - scons ルート ディレクトリの取得

カスタム ビルダーの一部として、2 つのプログラムを順番に実行する必要があります。

そのうちの 1 つは、私が立ち往生していて、絶対/相対パスを処理できないプログラムであるchdir=1ため、ビルダーのオプションを使用して、そのアクションがターゲットと同じディレクトリで実行されるようにする必要があります。

tools2 つ目は、プロジェクトのサブディレクトリにあるスクリプトです。SConstruct ファイルはプロジェクトのルートにあります。このスクリプトを実行するアクションを作成する必要がありますが、プロジェクトへの絶対パスも、ターゲットが配置されているtoolsディレクトリからスクリプトが配置されているサブディレクトリまでの相対パスもないため、問題が発生しています。どうにかしてプロジェクトのルート ディレクトリへの絶対パスを取得できれば、準備は万端です。`tools/myscript.bar' を連結するだけで済みます。

多かれ少なかれ、私が持っているものは次のとおりです。

問題は、「myscript.bar」が見つかるように、問題のアクションを次のように変更する必要があることです。

これはとても簡単に思えますが、方法がわかりません。

0 投票する
1 に答える
1394 参照

scons - scons: ビルド ディレクトリで glob をうまくプレイさせる

すべての .c ファイルをサブディレクトリにビルドしたいと考えています。私は次のようなことをするだろうと考えました:

src/foo/SConscript内容:

src/SConscript内容:

SConstruct内容:

しかし、 scons がどのソースファイルを から にコピーする必要があるかを決定する前に、 がディレクトリで実行される[]ため、出力されます。glob.glob()build/foosrc/foobuild/foo

どうすればこの問題を解決できますか?

0 投票する
4 に答える
3041 参照

touch - sconsの「タッチ」に相当しますか?

scons は、ファイルの mod 時間ではなく MD5 ハッシュを使用して、依存関係を構築する必要があるかどうかを判断します。

これをデフォルトの動作にしたいです。しかし、ファイルを編集して別のものにする以外に、特定のファイルが古くなっていると強制的に仮定する方法はありますか (「タッチ」に相当します)。

編集:使用例:

バイナリ ファイル F は、ツール X を使用して別のファイル G を作成するために使用されます。何らかの理由でファイル G が変更された (破損したか、編集した)、またはツール X が変更されたため、ファイル G とその下流のすべてを再作成したい.

編集:これは時折の使用のみです。私はこれが常に起こることを望んでいません。また、事前に特定のファイルがわからない場合もあります。このため、特定のファイルをビルドするために SConscript/SConstruct ファイルを変更したくありません。私が望むのは、コマンドプロンプトでこれを行うことです:

これにより、scons は foobar.h に依存するすべてのファイルを強制的にビルドしますが、入力sconsするだけで、依存関係のチェックに MD5 ハッシュを使用して通常のビルドが実行されます。SConscript/SConstruct ファイルを事前に編集して、ビルド時間を大幅に増加させない方法があれば、これを許可します (カスタム Decider だと思います)。