Tôi có một dự án boost.python mà tôi biên dịch bằng cmake và tạo. Nó là một phần của một mô-đun python, và tôi muốn có thể cài đặt mô-đun đó bằng cách sử dụng các phân đoạn. Tôi đã làm theo hướng dẫn here để tạo tệp CMakeLists.txt trước tiên biên dịch thư viện được chia sẻ, sau đó thiết lập setup.py để cài đặt bằng cài đặt mô-đun python. Tuy nhiên, trong khi tất cả các tệp python được nhận dạng bởi các dấu ngắt và được chuyển đến thư mục xây dựng, thư viện được chia sẻ không phải là, và tôi thực sự không biết tại sao.python/C++ - Biên soạn thư viện chia sẻ với cmake và cài đặt với các đường biên
My cấu trúc thư mục dự án:
- dự án
- xây dựng (distutils python thư mục)
- doc (tài liệu mô-đun)
- mô-đun (chính thư mục module)
- lõi (dir cho dự án/thư viện tăng cường
- CMakeLists.txt - xây dựng thư viện chia sẻ
- other_py_files (vài thư mục của file python tinh khiết)
- lõi (dir cho dự án/thư viện tăng cường
- CMakeLists.txt
- setup.py.in
- setup.py (tạo ra bởi cmake)
tập tin setup.py.in của tôi:
from distutils.core import setup
setup(
name='module',
version='${PACKAGE_VERSION}',
packages=['module', 'module.core', 'module.other_py_files'],
package_dir={'': '${CMAKE_CURRENT_SOURCE_DIR}'},
)
My CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
project (module)
add_subdirectory(module/core)
find_program(PYTHON "python")
if (PYTHON)
set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
set(DEPS "${CMAKE_CURRENT_SOURCE_DIR}/pyQCD/__init__.py")
set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp")
configure_file(${SETUP_PY_IN} ${SETUP_PY})
add_custom_command(OUTPUT ${OUTPUT}
COMMAND ${PYTHON} ${SETUP_PY} build
COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
DEPENDS ${DEPS})
add_custom_target(target ALL DEPENDS ${OUTPUT})
install(CODE "execute_process(COMMAND ${PYTHON} ${SETUP_PY} install)")
endif()
Tôi nghĩ distutils được cho là để thêm phần mở rộng thư viện chia sẻ tự động để xây dựng thư mục, hoặc tôi đã có mà sai ở đâu đó? (Thư viện được chia sẻ là một mô-đun python có thể nhập được xây dựng trên C api (boost.python), vì vậy nó phải hoạt động đúng không?)
Đây là liên kết đến mô-đun C/Python sử dụng CMake - https://gitlab.com/ideasman42/blender-mathutils - distutils chỉ được sử dụng để trích xuất tiền tố Python. * (mặc dù cũng có một setup.py, nó không được sử dụng cho việc xây dựng CMake) * – ideasman42