from setuptools import find_packages, setup
from glob import glob
from Cython.Build import cythonize # added
import os
package_name = 'cython_test'
files = package_name + "/*.py" # added
setup(
ext_modules=cythonize(files,compiler_directives={'language_level' : "3"},force=True,quiet=True), # added
name=package_name,
version='0.0.0',
packages=find_packages(exclude=['test']),
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name, 'launch'), glob(os.path.join('launch', '*launch.[pxy][yma]*')))
],
install_requires=['setuptools', "wheel", "Cython"], # added
zip_safe=True,
maintainer='ros2',
maintainer_email='ros2@todo.todo',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'cython_test = cython_test.cython_test:main',
],
},
)
python package의 setup.py 을 위와 같이 설정한다.
launch file에 대해서는 cython화를 적용하지 않음.
colcon build 이후

빌드 이후 기존 src 폴더에서 cython_test 패키지제거
build, install 파일에서 복사된 python 파일 제거
(위의 setup.py 설정으로 빌드 시 기존 파이썬 파일과 cython화된 파일 두 개 다 빌드 하는 방식
이므로 기존 파이썬 파일 제거 후에도 사용 가능)
> 빌드 시 기존 파이썬 파일을 제거하고 빌드하는 옵션이 있을 거 같긴한데..
~/ros2_ws/build/cython_test/build/lib.linux-x86_64-3.10/cython_test

~/ros2_ws/install/cython_test/lib/python3.10/site-packages/cython_test

/build /install 내부의 위의 두 원본 파일(cython_test.py)을 제거 후 배포