我有一个仅包含标题的库,其中包含一个文件夹层次结构和一堆.hpp
我想安装的文件。我的问题是,scons 不会将该文件夹复制到构建文件夹中。
这是我的目录布局的样子:
root
SConstruct
subdir
SConscript
the_lib
subdir_a
header_a.hpp
subdir_b
header_b.hpp
build
(...)
这是我所做的subdir/SConscript
:
all_headers = []
for root, dirnames, filenames in os.walk('.'):
for filename in fnmatch.filter(filenames, '*.hpp'):
fn = os.path.join(root, filename)
all_headers.append((fn, root))
for f, d in all_headers:
install.AddHeader( f, d )
我这样做是为了获取文件名及其相对路径,然后我使用前几天在 scons wiki 中找到的安装程序。
观察:all_headers
保持为空,因为该the_lib
文件夹没有被复制。我累了subdir_env.Dir('the_lib')
,但没有改变一件事。
运行脚本后,我the_lib/SConscript
的build
文件夹中有,但没有别的。当然,我可以理解我的文件系统遍历在这种情况下什么都不做。
谁能帮我?
更新
我发现的唯一方法是运行 afind -name "*.hpp"
并将结果粘贴到我的SConscript
. 现在就像一个魅力,但由于库是一个外部库(并且可能添加或删除了一些文件),我想到了一个更通用的解决方案,而不需要知道所有标题的名称。