Python 将SWIG与CMake和distutils相结合

Python 将SWIG与CMake和distutils相结合,python,c++,swig,distutils,Python,C++,Swig,Distutils,我有一个SWIG项目,目前正在用于Python绑定。我使用CMake作为构建系统,我有点困惑如何处理SWIG 在SWIG文档的一部分中,它告诉我们。到目前为止,这是我一直在做的事情,它工作得比较好,但在我尝试安装Python模块时会导致一些问题。我回顾了SWIG文档和它。再看一看,distutils似乎可以 这些似乎有点冲突,因为distutils方法将处理构建和安装,因此使用CMake和distutils将有两个系统构建绑定。我的希望是,使用distutils将使安装比使用CMake安装到当前

我有一个SWIG项目,目前正在用于Python绑定。我使用CMake作为构建系统,我有点困惑如何处理SWIG

在SWIG文档的一部分中,它告诉我们。到目前为止,这是我一直在做的事情,它工作得比较好,但在我尝试安装Python模块时会导致一些问题。我回顾了SWIG文档和它。再看一看,distutils似乎可以

这些似乎有点冲突,因为distutils方法将处理构建和安装,因此使用CMake和distutils将有两个系统构建绑定。我的希望是,使用distutils将使安装比使用CMake安装到当前环境所需的步骤更简单

我对此有两个主要问题:

  • 有没有更好的处理方法?我发现的文档似乎相互矛盾

  • 使用distutils方法是否可以在不同语言之间移植?如果我为另一种语言生成绑定,是否可以使用类似于distutils的东西来构建和安装该语言的绑定,或者我是否可能必须将该逻辑嵌入到CMake中?如果是后一种情况,我想如果某些语言的包管理器构建了绑定,而其他语言必须在CMake系统中,那会有点混乱。如果我的语言绑定是独立的项目,它们有C++代码和SWIG接口文件作为依赖项?


  • 更新:不久前,我制作了一个演示如何在Python中使用SWIG和CMake的示例。

    1。我以前使用过GNU自动工具,现在我使用CMake/CPackDeb进行构建、安装和分发。2.Distutils不能在语言之间“移植”——它是Python的东西。我个人为许多语言创建了绑定,并且有一个通用接口文件和特定于语言的文件。@JensMunk这种方法在python virtualenv(或其他语言中的等效工具)中的安装效果如何?我知道distutils是python的东西,但我想知道它是否是为每种语言(distutils用于python、maven用于java等)创建项目文件的好方法。您可以使用
    dpkg deb-X your_package.deb virtual_location
    将文件提取到虚拟目录中。您的包包包包含python和二进制文件。为了使事情变得整洁,我将库和SWIG接口分离成单独的二进制文件/包。有一个包系统很好,它允许您跨二进制文件重用库。1。我以前使用过GNU自动工具,现在我使用CMake/CPackDeb进行构建、安装和分发。2.Distutils不能在语言之间“移植”——它是Python的东西。我个人为许多语言创建了绑定,并且有一个通用接口文件和特定于语言的文件。@JensMunk这种方法在python virtualenv(或其他语言中的等效工具)中的安装效果如何?我知道distutils是python的东西,但我想知道它是否是为每种语言(distutils用于python、maven用于java等)创建项目文件的好方法。您可以使用
    dpkg deb-X your_package.deb virtual_location
    将文件提取到虚拟目录中。您的包包包包含python和二进制文件。为了使事情变得整洁,我将库和SWIG接口分离成单独的二进制文件/包。有一个软件包系统很好,它允许您跨二进制文件重用库。