問題タブ [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.
c++ - SConsを使用した外部コードツリーの構築
システムにインストールされているソースで利用可能なライブラリに依存するソフトウェアを構築するためにSConsを使用しようとしています。たとえば/usr/share/somewhere/src
。*.cpp
そのディレクトリにあるものを静的ライブラリに組み込み、自分のコードにリンクする必要があります。図書館の情報源にはそのSConscript
中にはありません。
ライブラリはシステムディレクトリにあるので、私には権限がなく、ビルドアーティファクトをのどこかに置きたくありません/usr
。/tmp
または.build
現在の作業ディレクトリでOKです。これは簡単にできると思いますが、これらすべてに巻き込まれていSConscripts
ますVariantDirs
。
SConsの問題を解決するための意図された方法は何ですか?
python - distutils のビルド エンジンとして SCons を使用する
拡張機能をビルドするために必要な C コードを含む python パッケージがあります (重要なビルドのニーズがあります)。私は SCons をビルド システムとして使用しました。SCons は非常に優れていて柔軟性があるからです。
distutils で配布する準備ができている SCons を使用して Python 拡張機能をコンパイルする方法を探しています。ユーザーが単純に setup.py install と入力して、デフォルトの distutils ビルド エンジンの代わりに SCons でコンパイルされた拡張機能を取得することを望んでいます。
頭に浮かぶアイデアは、distutils で build_ext コマンドを再定義することですが、詳細なドキュメントが見つかりません。
なにか提案を?
scons - Sconsを使用して-DOEM="FOOBAR"などの特定のCPPDEFINEを生成する方法
私の意図は、-DOEM ="FOOBAR"を含むコンパイラコマンドラインで終わることです。
SConstructファイルに次のものがあります。
次に、「overrides.py」ファイルに次のように配置します。
生成されるコマンドラインに「-DOEM=FOOBAR」が表示されてしまうようです。誰かが私を正しい方向に向けることができますか?ありがとう。
c - SConsを使用して、LinuxでデフォルトのCコンパイラを変更する
私のLinuxプラットフォームには、いくつかのバージョンがありgcc
ます。
私の下usr/bin
に:
gcc34
gcc44
gcc
ここにいくつかの出力があります:
4.4バージョンを使用する必要がありgcc
ますが、デフォルトは4.1バージョンのようです。
シンボリックリンクを使用せずにデフォルトのコンパイラを置き換え/usr/bin/gcc
て作成する方法はありますか?gcc44
/usr/bin/gcc44
シンボリックリンクを使用できない理由は、コードをを使用してRPMパッケージで出荷する必要があるためmock
です。mock
最小限のLinuxインストールを最初から作成し、コードをコンパイルする前に、指定された依存関係をインストールするだけです。この「最小インストール」をカスタマイズできません。
理想的には、完璧な解決策は、デフォルトのコンパイラとして置き換えgcc
られる公式のRPMパッケージをインストールすることです。そのようなパッケージはありますか?これも可能/良いですか?gcc44
追加情報
SCons(make
代替)を使用する必要がありますが、使用するバイナリを指定できませんgcc
。
gcc
また、ファイルでバイナリを指定する方法を教えてくれる答えも受け入れSConstruct
ます。
c++ - fltk-configの出力がgccへの引数を切り捨てるのはなぜですか?
ダウンロードしたSCONSの「makereplacement」とFastLightToolKitGuiを使用するアプリケーションを作成しようとしています。
fltkの存在を検出するためのSConstructコードは次のとおりです。
残念ながら、私の(Gentoo Linux)システムや他の多くの(Linuxディストリビューション)では、パッケージマネージャーがFLTK-1とFLTK-2の同時インストールを許可している場合、これは非常に厄介なことがあります。
SConstructファイルを次のように追加して使用するように変更しようfltk-config --cflags
としましたfltk-config --ldflags
(またはそれfltk-config --libs
よりも優れている可能性があります)。ldflags
しかし、これによりlibloのテストが失敗します!調べると、config.log
どのように失敗したかがわかります。
これは実際にどのように行う必要がありますか?
そして、私の答えを完成させるために、どうすれば結果から引用符を削除できos.popen( 'command').read()
ますか?
編集fltk-config
ここでの本当の問題は、gccがコンパイルするはずのfilename引数を受け取らない原因の出力を追加するのはなぜですか?
static - 共有よりも静的ライブラリの使用を強制するにはどうすればよいですか?
私のSConscriptには、次の行があります。
他のライブラリと動的にリンクしながら、sconsにmylib.soの代わりにmylib.aを使用させるにはどうすればよいですか?
編集:プラットフォーム固有のハックをできるだけ少なくすることを検討しています。
delphi - SConscript ビルダーに強制的にディレクトリを変更させるにはどうすればよいですか?
現在、私は 100 万 sloc のレガシー プロジェクトを退屈な .cmd スクリプトから SCons に移植しようとしています。その一部は VC++ で、他は Delphi です。C++ 部分の SConscripts の作成は簡単でした。
Delphi 部分をビルドするために、プログラムかライブラリ プロジェクトかを検出する非常に単純なビルダーを作成しました。SConscript を介して連鎖した後にビルダーを呼び出すと、scons が dcc32 $subdir/project.dpr を呼び出すようになり、dcc32 が $subdir ではなく現在のディレクトリでユニットを探すように誤解させます。
sconscript にあるコマンドを実行する前に $subdir に入るように scons に指示する方法はありますか、それともビルダー内で修正する必要がありますか?
前もって感謝します
naming-conventions - sconsで「libhello.so.0.0.1」のような共有ライブラリ名を取得するにはどうすればよいですか?
sconsユーティリティを使用して共有ライブラリを生成しています。私が次のルールを書くとき:
SharedLibrary('hello'、'hello.c')
``libhello.so''ファイルを取得します。
`` libhello.so.version''のようなファイルを自動的に取得する方法はありますか?
tar - scons: ソース ディレクトリがビルド ディレクトリにコピーされない
ビルド プロセスの一部として、. にある入力ディレクトリの tar ファイルを作成しますsrc/bundle/bundle
。src/bundle/SConscript:
私のSConstructで:
ビルドしようとすると:
scons が src/bundle/bundle を tmp/bundle/bundle にコピーしていないことは明らかですが、その理由がわかりません。
脚注: mkvgconf に絶対パス名を使用するのは悪い習慣ですが、この問題が解決されるまでは中間的なものです。
windows - scons + windows: Command() ビルダーでシェルスクリプトを実行できません
私はそのようなコマンドビルダーを持っています:
jsontar = Command("bundle.tar", bundleDir, "mkvgconf $SOURCE $TARGET")
mkvgconf はシェル スクリプトです $SOURCE はディレクトリへのパスです $TARGET はファイルへのパスです
Windows で実行しようとすると、SCons は vgmkconf を実行可能ファイルとして認識しません。
Google が登場: http://www.scons.org/wiki/UsingPkgConfigMsysShellScripts
このスクリプトを使用すると、SCons が認識して実行を試みる mkvgconf.cmd を作成できます。残念ながら、SCons は $SOURCE と $TARGET を Windows 文字列ではなく UNIX パス文字列として渡します。パス文字列が誤って解釈され、ビルドが失敗します。
質問 1: どうすれば SCons に私のシェル スクリプトを認識させることができますか?
質問 2: 質問 1 に解決策がない場合、パス名をビルド プラットフォーム用に正しくフォーマットするにはどうすればよいですか?