私はこの1つのような簡単なテスト例を得た:Pythonテストでテストできる到達可能な場所にswigラッパーを置く方法は?
そして、私のCMakeLists.txtは次のようになります。私は買ってあげるSTファイルを生成し、ラッパーを構築した後
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})
をビルドディレクトリにこの出力:
問題は私のテストですrunme.py
はこれらのライブラリをロードすることができません。だから私の質問は、どのようにexample.py
とexample.pyd
(それらのものだけ)を適切にテストできる到達可能な場所に置くことができますか?私はCMakeLists.txt set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/..)
に次の行を追加しようとしたとの結果だけでの.pyと生成されたラッパーを配置した
そしてビルドフォルダに残っている.pyd:
私はどのように私のpythonテストファイルでテストするために到達可能な場所にラッパーを置くことができますか?
確かに、私はそれを認識しています。いずれにせよ、CMakeを呼び出すときに__init__ファイルを生成する方法を知っていますか?私はCMakeの外でカスタムコマンド(touch __init__.py)を入力することを避けたいと思っています。すなわち、プロセスは完全にCMakeだけで駆動されます – BPL
あなたがビルドフォルダを事前に持っていなかったことを申し訳ありません。私はrunme.pyファイルからインポートを行う必要があるファイルを生成するために私の答えを編集したので、CMakeや外部からの介入では何もする必要はありません。 –