2011-01-26 61 views
2

我們可以使用EXECUTABLE_OUTPUT_PATH類似於$ {PROJECT_BINARY_DIR}/bin。如何設置SWIG生成的python模塊的輸出路徑。如何在cmake中通過SWIG更改生成的.py文件?

前,得到了下面的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

無關,但您不需要「IF」顧急性呼吸窘迫綜合徵;您應該能夠將「REQUIRED」參數添加到find_package,例如「find_package(SWIG REQUIRED)」。 – 2011-01-28 00:00:35

回答

4

CMake 2.8 docs

另一個特殊變量 CMAKE_SWIG_OUTDIR,它允許一個 指定編寫所有痛飲 生成模塊(痛飲-outdir選項)

所以,例如:

set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/bin) 
1

我不是用CMake的精通,但是我知道你可以使用命令行選項來痛飲設置成可執行的SWIG的輸出路徑:

swig.exe -outdir /path/I/want 

也許上面的線讀取SET(CMAKE_SWIG_FLAGS「」)

你可以把括號中所需的C ommand行選項?