я получил простой пример теста, как этот:Как положить обертки Swig в доступное место для тестирования с помощью тестов python?
И мой CMakeLists.txt выглядит следующим образом:
cmake_minimum_required(VERSION 3.7)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
SET(CMAKE_SWIG_FLAGS "")
SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES CPLUSPLUS ON)
set(SWIG_MODULE_example_EXTRA_DEPS example.cxx example.h)
SWIG_ADD_MODULE(example python example.i example.cxx)
SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES})
После создания файлов ST и построения оболочки я получить этот вывод в директории для сборки:
Проблема здесь - мой тест runme.py
не может загрузить эти библиотеки. Итак, мой вопрос заключается в том, как я могу разместить example.py
и example.pyd
(только те, которые находятся) в подходящем месте для правильной проверки? Я попытался добавить эту строку в CMakeLists.txt set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/..)
и результат размещения .py и сгенерированные упаковщики в одиночку:
И оставаясь в папке построить .pyd:
Итак, как я могу поместить обертки в доступное место для тестирования моими тестовыми файлами python?
Конечно, я знаю об этом.В любом случае, знаете ли вы, как сгенерировать файл __init__ при вызове CMake? Я бы предпочел не вводить какую-либо пользовательскую команду (коснитесь __init__.py) вне CMake, то есть: процесс отлично управляется только CMake – BPL
Извините, я не знал, что раньше у вас не было папки сборки. Я отредактировал свой ответ, чтобы создать файл, необходимый для импорта из файла runme.py, поэтому он не должен требовать, чтобы что-либо было сделано в CMake или любом внешнем вмешательстве. –