用于生成和打包CMake项目的Setuptools扩展
cmake-build-extension的Python项目详细描述
cmake生成扩展
用于生成和打包CMake项目的Setuptools扩展。在
一个项目^ {CD1>},C++文件可以用CMake编译(这里^ {< CD2>})
Python包(这里是my_python_package
)的结构如下:
myproject/
|-- CMakeLists.txt
|-- include
| `-- MyClass.h
|-- python
| `-- my_python_package
| `-- __init__.py
|-- setup.py
`-- src
`-- MyClass.cpp
C++和Python可以是独立的,即使这种混合设置通常是 应用于希望提供C++库的Python绑定的项目。在
此扩展启用以下功能:
- 简化了Python打包和CMake的交互。在
- 允许通过
setuptools
生成和打包通用CMake项目。在 - 简化了C++和Python混合项目的分发和使用。在
setup.py
脚本的以下行向管道添加了一个build_ext
步骤,该步骤
在生成的Python包的根目录中编译并安装CMake项目:
注意:如果CMake还导出目标,下游项目可以通过
正在将已安装的Python包的目录添加到CMAKE_PREFIX_PATH
。在
生成的Python安装树将类似于以下内容:
site-packages/
`-- my_python_package
|-- __init__.py
`-- lib
|-- cmake
| |-- MyProject.cmake
| |-- MyProjectTargets.cmake
| `-- MyProjectVersion.cmake
`-- libMyProject.so
这样,如果C++项目也包含Python绑定,它们可以由您最喜爱的工具生成。 和CMake一起处理。这通常很方便,因为CMake通常具有强大的模块 简化建筑过程,尤其是大型项目。在
查看^{
用法
一旦CMake project和setup.py
都正确配置,则
可以使用命令:
# Install with pip pip install . pip install --editable . # Install with setup.py python setup.py install . python setup.py develop . # Install with pip passing custom CMake options pip install --global-option="build_ext" --global-option="-DBAR=Foo;VAR=TRUE" . # Install with setup.py passing custom CMake options python setup.py install build_ext -D"BAR=Foo;VAR=TRUE"# Create wheel with pip pip wheel -w dist . # Create wheel with setup.py python setup.py bdist_wheel # Create wheel with setup.py passing custom CMake options python setup.py bdist_wheel build_ext -D"BAR=Foo;VAR=TRUE"
如果Python项目符合PEP517和PEP518,pip
将使用一个独立的环境。
请注意,CMake的find_package
仍然可以从文件系统中找到资源,而且它会找到的
不是孤立的。在
- 项目
标签: