waf:嵌套项目和_cache.py:不支持
waf: nested projects and _cache.py: not supported?
我正在将一个项目从autotools转换为waf,希望它也能在windows中轻松编译。
我正在使用一个超级项目,其中有两个子文件夹,这是两个项目。
其中一个是库,另一个是程序,像这样:
- 超级项目/wscript
- 超级项目/libraryproject/wscript
- 超级项目/programproject/wscript
看来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-includs命令行选项默认情况下也会丢失,所以我必须手动设置它们,如下所示:
cfg.env.LIBPATH_BOOST_PROGRAMPROJECT = cfg.options.boost_libs ...
-
_cache.py文件被programproject/wscript覆盖,从而丢失所有标志的配置。
问题:
- 有没有什么好的方法来嵌套项目并至少避免问题2
- 有没有什么合理的方法可以避免不需要脚本和单独构建项目的情况
配置文件不会写入两次。
我的错误是这样做:
cfg.env = ConfigSet()
我想要一个新的干净的ConfigSet
,但在两个项目中都这样做会丢失第一组标志。
既然环境似乎是在所有项目配置之间共享的,那么用自定义名称命名变量是一种好的风格吗?例如,不使用:
cfg.check_boost('program_options')
我应该使用:
cfg.check_boost('program_options', uselib_store='BOOST_MYPROGRAMPROJECT')
- 这种风格好吗?还是通常用另一种方式
- 是否可以以更干净的方式导出
ConfigSet
s
相关文章:
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- 如何构建一个 setup.py 来编译C++使用 Python、pybind11 和 Mingw-w64 的扩展?
- 如何应用 printers.py 修改?(Linux操作系统)
- 通过 sh 导入模块错误运行.py脚本
- 链接 library.lib 使用 setup.py.
- pybind 如何对 py::list 对象进行操作
- 返回多个 py::数组而不在 pybind11 中复制
- 如何在 module.reload() 之后保持 py::objects 存活
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 通往GCC_ARM之路 (mbed_settings.py)
- 如何从 python (py) 文件调用 C++ 函数
- 使用参数调用C 的gdal_merge.py
- 如何在python文件中访问c ++头文件(.py)
- 当我使用py 生成时,然后在macOS上boost.python包装器时,我会发现有关std :: string的错
- 在同一目录中使用conanfile.txt和conanfile.py
- 从C 运行.py脚本
- 扩展安装工具扩展以在 setup.py 中使用 CMake
- CACHE在C 中遗忘的矩阵换位实现
- 提升 Python 如何在导入的 Python 文件中导入 py
- 保留所有处理器资源、Core和Cache