Как изменить сгенерированный файл .py SWIG в cmake? - PullRequest
2 голосов
/ 26 января 2011

Мы можем использовать EXECUTABLE_OUTPUT_PATH для чего-то вроде $ {PROJECT_BINARY_DIR} / bin. Как установить выходной путь для сгенерированного модуля Python с помощью SWIG.

ex, получил следующий CMakeLists.txt

FIND_PACKAGE(SWIG)
IF(SWIG_FOUND) 
FIND_PACKAGE(PythonLibs)
IF(PYTHONLIBS_FOUND)

INCLUDE(${SWIG_USE_FILE})

EXECUTE_PROCESS( COMMAND python -c "import sys;print"%s.%s"%sys.version_info[0:2]" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)


INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})

SET(CMAKE_SWIG_FLAGS "")

SET_SOURCE_FILES_PROPERTIES(partio.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(partio.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(partio python partio.i)
SWIG_LINK_LIBRARIES(partio ${PYTHON_LIBRARIES} ${ZLIB_LIBRARY} partio)

SET(PYTHON_DEST "lib64/python${PYTHON_VERSION}/site-packages" )
INSTALL(TARGETS _partio DESTINATION ${PYTHON_DEST})
INSTALL(FILES ${CMAKE_BINARY_DIR}/${outdir}/src/py/partio.py  DESTINATION ${PYTHON_DEST})

ENDIF(PYTHONLIBS_FOUND)
ENDIF(SWIG_FOUND)

Ответы [ 2 ]

4 голосов
/ 28 января 2011

Из документов CMake 2.8 :

Другая специальная переменная - CMAKE_SWIG_OUTDIR, она позволяет указать, куда записать весь сгенерированный модуль swig (опция swig -outdir)

Так, например:

set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
1 голос
/ 28 января 2011

Я не разбираюсь в CMAKE, однако я знаю, что вы можете установить выходной путь SWIG, используя параметр командной строки для исполняемого файла SWIG:

swig.exe -outdir /path/I/want

Возможно, строка выше гласит: SET (CMAKE_SWIG_FLAGS "")

Вы можете поставить в скобках требуемый параметр командной строки?

...