正在显示
1 个修改的文件
包含
61 行增加
和
0 行删除
cmake/PythonMacros.cmake
0 → 100644
1 | +# Python macros | |
2 | +# ~~~~~~~~~~~~~ | |
3 | +# Copyright (c) 2007, Simon Edwards <simon@simonzone.com> | |
4 | +# | |
5 | +# Redistribution and use is allowed according to the terms of the BSD license. | |
6 | +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. | |
7 | +# | |
8 | +# This file defines the following macros: | |
9 | +# | |
10 | +# PYTHON_INSTALL (SOURCE_FILE DESTINATION_DIR) | |
11 | +# Install the SOURCE_FILE, which is a Python .py file, into the | |
12 | +# destination directory during install. The file will be byte compiled | |
13 | +# and both the .py file and .pyc file will be installed. | |
14 | + | |
15 | +GET_FILENAME_COMPONENT(PYTHON_MACROS_MODULE_PATH ${CMAKE_CURRENT_LIST_FILE} PATH) | |
16 | + | |
17 | +MACRO(PYTHON_INSTALL SOURCE_FILE DESTINATION_DIR) | |
18 | + | |
19 | + FIND_FILE(_python_compile_py PythonCompile.py PATHS ${CMAKE_MODULE_PATH}) | |
20 | + | |
21 | + | |
22 | + # Install the source file. | |
23 | + INSTALL(FILES ${SOURCE_FILE} DESTINATION ${DESTINATION_DIR}) | |
24 | + | |
25 | + # Byte compile and install the .pyc file. | |
26 | + GET_FILENAME_COMPONENT(_absfilename ${SOURCE_FILE} ABSOLUTE) | |
27 | + GET_FILENAME_COMPONENT(_filename ${SOURCE_FILE} NAME) | |
28 | + GET_FILENAME_COMPONENT(_filenamebase ${SOURCE_FILE} NAME_WE) | |
29 | + GET_FILENAME_COMPONENT(_basepath ${SOURCE_FILE} PATH) | |
30 | + | |
31 | + if(WIN32) | |
32 | + string(REGEX REPLACE ".:/" "/" _basepath "${_basepath}") | |
33 | + endif(WIN32) | |
34 | + | |
35 | + SET(_bin_py ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filename}) | |
36 | + SET(_bin_pyc ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filenamebase}.pyc) | |
37 | + | |
38 | + FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}) | |
39 | + | |
40 | + SET(_message "-DMESSAGE=Byte-compiling ${_bin_py}") | |
41 | + | |
42 | + GET_FILENAME_COMPONENT(_abs_bin_py ${_bin_py} ABSOLUTE) | |
43 | + IF(_abs_bin_py STREQUAL ${_absfilename}) # Don't copy the file onto itself. | |
44 | + ADD_CUSTOM_COMMAND( | |
45 | + TARGET compile_python_files | |
46 | + COMMAND ${CMAKE_COMMAND} -E echo ${message} | |
47 | + COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py} | |
48 | + DEPENDS ${_absfilename} | |
49 | + ) | |
50 | + ELSE(_abs_bin_py STREQUAL ${_absfilename}) | |
51 | + ADD_CUSTOM_COMMAND( | |
52 | + TARGET compile_python_files | |
53 | + COMMAND ${CMAKE_COMMAND} -E echo ${message} | |
54 | + COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py} | |
55 | + COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py} | |
56 | + DEPENDS ${_absfilename} | |
57 | + ) | |
58 | + ENDIF(_abs_bin_py STREQUAL ${_absfilename}) | |
59 | + | |
60 | + INSTALL(FILES ${_bin_pyc} DESTINATION ${DESTINATION_DIR}) | |
61 | +ENDMACRO(PYTHON_INSTALL) | ... | ... |
请
注册
或
登录
后发表评论