我的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)以及稍后添加更多源而不更改构建脚本的选项,这是可能的原因。我在文档或其他地方没有看到任何内容,
提前致谢
答案 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