Ai
3 Star 0 Fork 0

mirrors_lepy/libigl-python-bindings

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
setup.py 4.38 KB
一键复制 编辑 原始数据 按行查看 历史
import os
import re
import sys
import platform
import subprocess
from distutils.version import LooseVersion
from setuptools import setup, Extension, find_packages
from setuptools.command.build_ext import build_ext
class CMakeExtension(Extension):
def __init__(self, name, sourcedir=''):
Extension.__init__(self, name, sources=[])
self.sourcedir = os.path.abspath(sourcedir)
class CMakeBuild(build_ext):
def run(self):
try:
out = subprocess.check_output(['cmake', '--version'])
except OSError:
raise RuntimeError(
"CMake must be installed to build the following extensions: , ".join(e.name for e in self.extensions))
# self.debug = True
cmake_version = LooseVersion(re.search(r'version\s*([\d.]+)', out.decode()).group(1))
if cmake_version < '3.2.0':
raise RuntimeError("CMake >= 3.2.0 is required")
for ext in self.extensions:
self.build_extension(ext)
def build_extension(self, ext):
extdir = os.path.join(os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name))),"igl")
cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir,
'-DPYTHON_EXECUTABLE=' + sys.executable]
cfg = 'Debug' if self.debug else 'Release'
build_args = ['--config', cfg]
cmake_args += ['-DCMAKE_BUILD_TYPE=' + cfg]
# cmake_args += ['-DDEBUG_TRACE=ON']
if platform.system() == "Windows":
cmake_args += ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}'.format(cfg.upper(), extdir)]
cmake_generator = os.environ.get('CMAKE_GENERATOR', '')
if cmake_generator != "NMake Makefiles" and "Ninja" not in cmake_generator:
if sys.maxsize > 2**32:
cmake_args += ['-A', 'x64']
# build_args += ['--', '/m']
else:
build_args += ['--', '-j2']
tmp = os.environ.get("AR", "")
if "arm64-apple" in tmp:
tmp = os.environ.get("CMAKE_ARGS", "")
if tmp:
cmake_args += tmp.split(" ")
tmp = os.environ.get("CC", "")
print("C compiler", tmp)
if tmp:
cmake_args += ["-DCMAKE_C_COMPILER={}".format(tmp)]
tmp = os.environ.get("CXX", "")
print("CXX compiler", tmp)
if tmp:
cmake_args += ["-DCMAKE_CXX_COMPILER={}".format(tmp)]
else:
tmp = os.getenv('CC_FOR_BUILD', '')
if tmp:
print("Setting c compiler to", tmp)
cmake_args += ["-DCMAKE_C_COMPILER=" + tmp]
tmp = os.getenv('CXX_FOR_BUILD', '')
if tmp:
print("Setting cxx compiler to", tmp)
cmake_args += ["-DCMAKE_CXX_COMPILER="+ tmp]
env = os.environ.copy()
env['CXXFLAGS'] = '{} -DVERSION_INFO=\\"{}\\"'.format(env.get('CXXFLAGS', ''),self.distribution.get_version())
tmp = os.getenv("target_platform", "")
if tmp:
print("target platfrom", tmp)
if "arm" in tmp:
cmake_args += ["-DCMAKE_OSX_ARCHITECTURES=arm64"]
# print(cmake_args)
# tmp = os.getenv('CMAKE_ARGS', '')
# if tmp:
# tmp = tmp.split(" ")
# print("tmp", tmp)
# cmake_args += tmp
# cmake_args += ["-DCMAKE_OSX_ARCHITECTURES" , "arm64"]
# print(cmake_args)
if not os.path.exists(self.build_temp):
os.makedirs(self.build_temp)
subprocess.check_call(['cmake', ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env)
subprocess.check_call(['cmake', '--build', '.'] + build_args, cwd=self.build_temp)
print() # Add an empty line for cleaner output
with open("README.md", "r") as fh:
long_description = fh.read()
setup(
name="igl",
version="2.2.1",
author="libigl",
author_email="",
description="libigl Python Bindings",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://libigl.github.io/libigl-python-bindings/",
ext_modules=[CMakeExtension('pyigl')],
install_requires=[ 'numpy', 'scipy' ],
cmdclass=dict(build_ext=CMakeBuild),
packages=find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License"
],
test_suite="tests"
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors_lepy/libigl-python-bindings.git
git@gitee.com:mirrors_lepy/libigl-python-bindings.git
mirrors_lepy
libigl-python-bindings
libigl-python-bindings
master

搜索帮助