Manual-Labeling-Tool/WindSpeedModel/WindSpeedTools/setup.py

65 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from setuptools import setup
from setuptools.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
import numpy
from pathlib import Path
import shutil
import sys
class MyBuildExt(build_ext):
def run(self):
build_ext.run(self)
build_dir = Path(self.build_lib)
root_dir = Path(__file__).parent
target_dir = build_dir if not self.inplace else root_dir
self.copy_file(Path('./WindSpeedTools') / '__init__.py', root_dir, target_dir)
#self.copy_file(Path('./pkg2') / '__init__.py', root_dir, target_dir)
self.copy_file(Path('.') / '__init__.py', root_dir, target_dir)
def copy_file(self, path, source_dir, destination_dir):
if not (source_dir / path).exists():
return
shutil.copyfile(str(source_dir / path), str(destination_dir / path))
# 判断平台和编译器选择正确的OpenMP标志
compile_args = []
link_args = []
if sys.platform == "win32":
# 在Windows上使用MSVC编译器
compile_args = ['/openmp'] # 仅传递给编译器
# 链接器不需要此选项,因此 link_args 为空
else:
# 在Linux/macOS上使用GCC/Clang编译器
compile_args = ['-fopenmp']
link_args = ['-fopenmp'] # 对于GCC通常需要同时传递给编译器和链接器
setup(
name="MyModule",
ext_modules=cythonize(
[
#Extension("pkg1.*", ["root/pkg1/*.py"]),
Extension("pkg2.*", ["WindSpeedModel.pyx"],
# 添加OpenMP支持
extra_compile_args=compile_args, # 选项只给编译器
extra_link_args=link_args, # 链接器使用单独的选项列表
),
#Extension("1.*", ["root/*.py"])
],
build_dir="build",
compiler_directives=dict(
always_allow_keywords=True
)),
cmdclass=dict(
build_ext=MyBuildExt
),
packages=[],
include_dirs=[numpy.get_include()],
)
# 指令: python setup.py build_ext --inplace