我正在将一个项目从autotools转换为waf,希望它也可以在windows中轻松编译。
我正在使用一个带有两个子文件夹的超级项目,这是2个项目。
其中一个是图书馆,另一个是程序,如下:
似乎waf对子项目的支持很差。我在每个目录中都有一个wscript。
我从superproject到其他两个项目,但是两个项目都共享_cache.py文件。这有以下副作用(问题):
使用boost工具时,我不得不像这样使用它来避免名称冲突:
# In library project
cfg.check_boost('boost_program_options', uselib_store='BOOST_LIBRARYPROJECT')
# In program project
cfg.check_boost('boost_program_options', uselib_store='BOOST_PROGRAMPROJECT')
默认情况下,boost-libs和boost-includes命令行选项也会丢失,因此我必须手动设置它们,如下所示:
cfg.env.LIBPATH_BOOST_PROGRAMPROJECT = cfg.options.boost_libs
...
programproject / wscript覆盖了_cache.py文件,丢失了标志的所有配置。
问题:
答案 0 :(得分:1)
配置文件未写入两次。
我的错误就是这样做:
cfg.env = ConfigSet()
我想要一个新的,干净的ConfigSet
但是在两个项目中都这样做会使第一组标志丢失。
由于环境似乎在所有项目配置中共享,因此使用自定义名称命名变量是否很好?例如,而不是使用:
cfg.check_boost('program_options')
我应该使用:
cfg.check_boost('program_options', uselib_store='BOOST_MYPROGRAMPROJECT')
ConfigSet
s?