小编Iva*_*aev的帖子

Boost.Python和C++ std ::指针向量

我正在使用Boost.Python为我的C++库创建一个包装器,我遇到了一些麻烦,谷歌搜索一整天都没有产生任何结果.例如,我有以下代码:

class Base
{
public:
    virtual void func() = 0;
};

class Derived : public Base
{
public:
    virtual void func()
    {
        cout << "Derived::func()"<< endl;
    }
};


// wrapper for Base
struct BaseWrapper : Base, python::wrapper<Base>
{
    virtual void func()
    {
        this->get_override("func");
    }
};


Base* makeDerived()
{
    return new Derived;
}

vector<Base*>* makeDerivedVec()
{
    vector<Base*> *v = new vector<Base*>;
    v->push_back(new Derived);
    v->push_back(new Derived);
    v->push_back(new Derived);
    return v;
}

BOOST_PYTHON_MODULE(mylib)
{
    // export Base
    class_<BaseWrapper, noncopyable>("Base")
            .def("func", pure_virtual(&Base::func));

    class_<vector<Base*> >("BasePtrVec") …
Run Code Online (Sandbox Code Playgroud)

python boost pointers vector

6
推荐指数
1
解决办法
713
查看次数

将 Waf 目标链接到外部构建系统 (CMake) 生成的库

我的 waf 项目有两个依赖项,使用 CMake 构建。

我想做的,是按照waf git repo 中找到的dynamic_build3示例,创建一个生成 CMake 的工具,并在成功构建后执行安装到 waf 的输出子目录中:

@extension('.txt')
def spawn_cmake(self, node):
    if node.name == 'CMakeLists.txt':
        self.cmake_task = self.create_task('CMake', node)
        self.cmake_task.name = self.target


@feature('cmake')
@after_method('process_source')
def update_outputs(self):
    self.cmake_task.add_target()


class CMake(Task.Task):
    color = 'PINK'

    def keyword(self):
        return 'CMake'

    def run(self):
        lists_file = self.generator.source[0]
        bld_dir = self.generator.bld.bldnode.make_node(self.name)
        bld_dir.mkdir()

        # process args and append install prefix
        try:
            cmake_args = self.generator.cmake_args
        except AttributeError:
            cmake_args = []
        cmake_args.append(
            '-DCMAKE_INSTALL_PREFIX={}'.format(bld_dir.abspath()))

        # execute CMake
        cmd = '{cmake} {args} {project_dir}'.format(
            cmake=self.env.get_flat('CMAKE'), …
Run Code Online (Sandbox Code Playgroud)

c c++ python cmake waf

6
推荐指数
1
解决办法
776
查看次数

标签 统计

python ×2

boost ×1

c ×1

c++ ×1

cmake ×1

pointers ×1

vector ×1

waf ×1