0

私は次のような行を持つsconscriptを持っています:

EXT_SHADERS = shader_env.SharedLibrary('scrubs', source_files, LIBPREFIX='')

そして、source_filesは次から「省略」されています。

src_base_dir  = os.path.join(shader_env['ROOT_DIR'], 'contrib', 'extensions', 'scrubs', 'shaders')
source_files  = [os.path.join('shaders', x) for x in find_files_recursive(src_base_dir, ['.c', '.cpp'])]

これで、 scrubsという名前の 1 つの共有ライブラリがビルドされることがわかりましたが、ソース フォルダー内の .cpp ファイルごとに、対応するソース ファイル (.cpp) からのみビルドされた1 つの共有ライブラリと、ビルドを変更せずに後でソースを追加するオプションが必要です。スクリプトは、この考えられる原因のようなものです。ドキュメントや他の場所には何も表示されません。

前もって感謝します

4

1 に答える 1

1

ソース ファイルごとに 1 つの共有ライブラリが必要で、ライブラリ名がソース ファイルと同じベース名 (fileName1.cc => libfileName1.so、fileName2.cc => libfileName2.so) である場合は、次のように記述する必要があります。できればos.path.splitext()関数を使用して、さらにいくつかのPythonコード。

ここに例があります。

また、あなたの回答から、ソース ファイルが SCons でサポートされていないルート SConsctruct と同じディレクトリ構造にない可能性があります。以下に 2 つの例を示します (1 つはサポートされ、もう 1 つはサポートされていません)。

サポートされているディレクトリ構造

topDir/
  SConstruct
  srcDir/
     srcFile1.cc
     srcFile2.cc

サポートされていないディレクトリ構造

topDir/
  subDir1/
     SConstruct
  subDir2/
     srcFile1.cc
     srcFile2.cc
于 2013-01-06T12:52:19.123 に答える