問題タブ [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 投票する
3 に答える
1568 参照

c++ - あるモジュールで CXXFLAGS を設定する scons が別のモジュールに影響を与える

dirA/SConscript で私が持っている:

私が持っているdirB/SConscriptで

さて、コンパイルされた dirB の c++ ファイルは、dirA から CXXFLAGS を取得します。これは、CCFLAGS では発生しません。probeenv['CXXFLAGS'] = ['-fno-rtti','-Wnon-virtual-dtor']dirAで使用しても発生しません

0 投票する
0 に答える
281 参照

scons - sconsのバックエンドとしてlibtoolを使用している人はいますか?

例に興味があります。

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

scons - scons: 非依存アクション (「ファントム ターゲット」?)

これを行う方法がよくわかりません...

SConscript ファイルである種のアクションを宣言したい:

そしてSConstructファイルで:

コマンドラインで入力できるように

そしてそれは実行されます

私はこれを行うことができないようです... sconsは依存関係のチェックをしたいのですが、この場合はそれをしたくありません:/

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

c++ - msys を使用する Windows での scons LIBPATH

LLVMを使用して C++ プロジェクトに取り組んでおり、LLVM ビルド システム (autoconf と make を使用) を scons に置き換えたいと考えています。残念ながら、私は今大きな問題に遭遇しました。プロジェクトを Windows だけでなく Linux でもコンパイルしたい。Windows でコンパイルするには、autoconf/make システムと完全に連携する mingw/msys を使用します。

ただし、scons はライブラリ パスを変更し、ドライブ文字をプレフィックスとして付けます。つまり/usr/local/lib、リンカーに渡される実際のパラメータを指定する-LD:\usr\local\libと、必要なライブラリが明らかに含まれていません。ライブラリパスを次のように設定しています。

またenv['LIBPATH']、正しいパスも含まれています。

スコンがそのパスをいじるのを防ぐ方法はありますか?

ありがとう

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

scons - SCons:外部ライブラリをコピーして出力ディレクトリを構築します

Mac、Linux、およびWindowsのビルドシステムにSCons+swtoolkitを使用しています。すべての外部ライブラリの依存関係を含むsvnリポジトリがあり、そのパスは環境変数EXTERNAL_SDKSにあります。

各ターゲットSConscriptで、ターゲットがリンクされているEXTERNAL_SDKSパスの下にあるライブラリを検索し、ターゲット自体がビルドされてそこに配置されるときに、ビルド出力フォルダーにコピーするメソッドを見つけたいと思います。

swtoolkitの追加コンポーネントを使用してこれを行う方法の1つを見つけましたが、sconscriptsの解析が1トン遅くなります(Macでは15秒以上、Windowsでは1分以上!!)。

誰かがこれを行う効率的な方法を知っていますか?

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

c++ - scons システムのインクルード パスを設定するにはどうすればよいですか

scons を使用すると、インクルード パスを簡単に設定できます。

これはフラグを渡します

gccへ

ただし、多くの警告を有効にしてコンパイルしようとしています。特に

特定のブーストインクルードで恐ろしく死ぬ... gccはシステムインクルードを異なる方法で扱うため、インクルードパスではなくシステムインクルードパスにブーストインクルードを追加することでこれを修正できます。

-Ifoo の代わりに gcc に渡す必要があるのは

CPPFLAGS 変数を使用してこれを行うことができると思いますが、scons に組み込まれたより良い解決策があるかどうか疑問に思っていました。

0 投票する
3 に答える
2790 参照

scons - ビルドのターゲットプラットフォームを見つけますか?

SConsが構築しているプラ​​ットフォーム(Linux、Mac OS X、Windowsなど-アーキテクチャには関係ありません)を確認するにはどうすればよいですか。

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

build - SCons: How to use the same builders for multiple variants (release/debug) of a program

The SCons User Guide tells about the usage of Multiple Construction Environments to build build multiple versions of a single program and gives the following example:

Instead of manually assigning different names to the objects compiled with different environments, VariantDir() / variant_dir sounds like a better solution...

But if I place the Program() builder inside the SConscript:

How can I export different environments to the same SConscript file?

Unfortunately the discussion in the SCons Wiki does not bring more insight to this topic.

Thanks for your input!

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

generator - SCons はすべてのファイルをクリーンアップするわけではありません

「ビルド」のディレクトリを含むファイル システムがあり、各ディレクトリには「build-info.xml」というファイルが含まれています。ただし、ビルドスクリプトが「build-info.xml」を生成する前にビルドの一部が発生したため、その場合、スケルトン build-info.xml を生成するために使用されるやや自明ではない SCons SConstruct があり、それを次のように使用できます。さらなるルールへの依存。

すなわち:各ディレクトリについて:

  • build-info.xml が既に存在する場合は、何もしません。さらに重要なことは、「scons --clean」で削除しないことです。
  • build-info.xml が存在しない場合は、代わりにスケルトンを生成します - build-info.xml は他のファイルに依存しません - スケルトンは本質的に最小限のデフォルトです。
  • --clean 中に、build-info.xml が生成された場合は削除し、そうでない場合はそのままにしておきます。

私の SConstruct は次のようになります。

私の問題は、「scons --clean」が生成された build-info.xml ファイルを削除しないことです。

「if」内でenv.Clean(t、build_info_xml)をいじりましたが、これを機能させることができませんでした-主に「t」に何を割り当てるかを理解できなかったためです-生成されたビルド情報が必要です。 xml は、別のターゲットのクリーニングに基づくのではなく、無条件にクリーニングする必要がありましたが、これを機能させることができませんでした。

「if」の後で単純な env.Clean(None, "build_info_xml") を試してみると、生成されなかったものを含むすべての build-info.xml ファイルが SCons によって消去されることがわかりました。どちらも良くありません。

私が知りたいのは、SCons がどのファイルをクリーニングする必要があり、どのファイルをクリーニングしないかを決定する方法です。SCons がこのターゲットを Clean 候補として記録するのを防ぐジェネレーター関数の使用方法について何かおかしいことはありますか?