9

Mac と Linux で C++ と Python の両方から使用できる C++ ライブラリを作成しています。そのため、プロジェクトに CMake と SWIG を使用することにしました。

SWIG 2.0 のドキュメントで詳しく説明されているように、SWIG と CMake の組み合わせは私の Mac でも問題なく動作します。 http://www.swig.org/Doc2.0/SWIGDocumentation.html#Introduction_build_system

しかし、について質問がありmake installます。

とを入力cmake .した後make_example.soが正常に生成されました。しかし、自動生成された Makefile にはターゲットmake installがないため、機能しません。Makefile にターゲットをinstall追加する方法を知りたいです。各システムのディレクトリの下にインストールしinstallたいと思います。_example.sosite-packages

上記のリンクに書かれているCMakeの例を変更する方法を誰か教えていただければ幸いです。

4

2 に答える 2

10
find_package(SWIG REQUIRED)
find_package(PythonLibs REQUIRED)

include(${SWIG_USE_FILE})
set(CMAKE_SWIG_FLAGS "")
include_directories(${PYTHON_INCLUDE_DIRS})

set_source_files_properties(target.i PROPERTIES CPLUSPLUS ON)
set_source_files_properties(target.i PROPERTIES SWIG_FLAGS "-includeall")
swig_add_module(target python target.i ${SOURCES})
swig_link_libraries(target ${PYTHON_LIBRARIES})

execute_process(COMMAND python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
install(TARGETS _target DESTINATION ${PYTHON_SITE_PACKAGES})
install(FILES ${CMAKE_BINARY_DIR}/src/target.py DESTINATION ${PYTHON_SITE_PACKAGES})
于 2013-02-10T10:14:09.907 に答える
8

CMake インターフェースmake installは、CMake コマンドinstall()です。この例では、次のようなインストール ルールを追加できます。

install(
  TARGETS ${SWIG_MODULE_example_REAL_NAME} 
  # ... add other arguments to install() as necessary
)

install()CMakeList にコマンドがあると、CMake は として呼び出し可能なターゲットを生成しinstallますmake install

于 2013-02-09T12:39:46.640 に答える