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 的共享库,但是对于源文件夹中的每个 .cpp 文件,需要一个仅从其对应的源文件 (.cpp) 构建的共享库,以及稍后添加更多源而不更改构建的选项脚本,是不是像这种可能的原因。我在文档或其他地方没有看到任何东西,

提前致谢

4

1 回答 1

1

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

是一个例子。

另外,从您的回答中,我看到源文件与根 SConstruct 不在同一目录结构中的可能性,SCons 不支持该目录结构。这是两个示例(一个支持,另一个不支持)

支持的目录结构

topDir/
  SConstruct
  srcDir/
     srcFile1.cc
     srcFile2.cc

不支持的目录结构

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