Scons:每个源文件的共享库

时间:2013-01-06 12:15:00

标签: scons

我的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'])]

现在我从docs了解到这构建了一个名为scrubs的共享库,但是对于源文件夹中的每个.cpp文件需要一个共享库 仅构建 从它的相应源文件(.cpp)以及稍后添加更多源而不更改构建脚本的选项,这是可能的原因。我在文档或其他地方没有看到任何内容,

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您希望每个源文件有一个共享库,并且库名与源文件具有相同的基名(fileName1.cc => libfileName1.so,fileName2.cc => libfileName2.so)那么您将要编写更多的python代码,最好使用os.path.splitext()函数。

Here就是一个例子。

此外,根据您的回答,我发现源文件与SConsctruct不支持的根SConsctruct的目录结构可能不同。以下是两个示例(一个支持,另一个不支持)

支持的目录结构

topDir/
  SConstruct
  srcDir/
     srcFile1.cc
     srcFile2.cc

不支持dir结构

topDir/
  subDir1/
     SConstruct
  subDir2/
     srcFile1.cc
     srcFile2.cc