| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- # spark_install_target
- # 基于传入的路径/目标进行安装
- # 可接受的值为: 安装路径 目标A
- # 可接受的值为: 安装路径 目标A 目标B 目标C...
- macro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS)
- install(TARGETS
- ${INSTALL_TARGETS} ${ARGN}
- DESTINATION ${INSTALL_TARGET_DIR})
- endmacro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS)
- # spark_install_file
- # 基于传入的路径/文件进行安装
- # 可接受的值为: 安装路径 文件A
- # 可接受的值为: 安装路径 文件A 文件B 文件C...
- macro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE)
- install(FILES
- ${INSTALL_FILE} ${ARGN}
- DESTINATION ${INSTALL_FILE_DIR})
- endmacro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE)
- # spark_install_program
- # 基于传入的路径/文件进行安装,并自动为其添加可执行权限
- # 可接受的值为: 安装路径 文件A
- # 可接受的值为: 安装路径 文件A 文件B 文件C...
- macro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM)
- install(PROGRAMS
- ${INSTALL_PROGRAM} ${ARGN}
- DESTINATION ${INSTALL_PROGRAM_DIR})
- endmacro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM)
- # spark_install_directory
- # 基于传入的路径/目录进行安装
- # 可接受的值为: 安装路径 路径A
- # 可接受的值为: 安装路径 路径A/* 为安装路径A下所有内容
- macro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY)
- # INSTALL_DIRECOTRY 可能包含 * ?
- # 1. 找到 '*', 截取,列出目录下所有文件,安装
- # 2. 是文件的直接使用 spark_install_file 安装
- # 2. 是目录的直接使用 spark_install_directory 安装
- # message(FATAL_ERROR "${INSTALL_DIRECTORY_DIR}")
- # string(FIND <string> <substring> <output_variable> [REVERSE])
- string(FIND "${INSTALL_DIRECOTRY}" "*" INSTALL_DIRECTORY_FIND_INDEX)
- # message(FATAL_ERROR "${INSTALL_DIRECTORY_FIND_INDEX}: ${INSTALL_DIRECTORY_DIR}")
- # file(GLOB <variable>
- # [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
- # [<globbing-expressions>...])
- if (NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1)
- # string(SUBSTRING <string> <begin> <length> <output_variable>)
- string(SUBSTRING "${INSTALL_DIRECOTRY}" 0 ${INSTALL_DIRECTORY_FIND_INDEX} INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING)
- # message(FATAL_ERROR "directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}")
- # file(GLOB <variable>
- # [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
- # [<globbing-expressions>...])
- file(GLOB INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}/*)
- list(LENGTH INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH)
- foreach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST)
- # message("-> ${item}")
- if(IS_DIRECTORY ${item})
- message("-> ${item} IS_DIRECTORY")
- # spark_install_directory(${INSTALL_DIRECTORY_DIR} ${item})
- install(DIRECTORY
- ${item}
- DESTINATION ${INSTALL_DIRECTORY_DIR}
- USE_SOURCE_PERMISSIONS)
- else()
- message("-> ${item} NOT IS_DIRECTORY")
- spark_install_program(${INSTALL_DIRECTORY_DIR} ${item})
- # spark_install_file(${INSTALL_DIRECTORY_DIR} ${item})
- endif(IS_DIRECTORY ${item})
- endforeach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST)
- # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST}")
- # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH}")
- else()
- # ISSUES: You Must check here
- # message(FATAL_ERROR "install: ${INSTALL_DIRECTORY_DIR}")
- install(DIRECTORY
- ${INSTALL_DIRECOTRY} ${ARGN}
- DESTINATION ${INSTALL_DIRECTORY_DIR})
- endif(NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1)
- endmacro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY)
- macro(spark_install_changelog CHANGE_LOG_FILE)
- set(SOURCE_CHANGE_LOG_FILE ${CHANGE_LOG_FILE})
- if (EXISTS ${SOURCE_CHANGE_LOG_FILE})
- execute_process(COMMAND test -f ${SOURCE_CHANGE_LOG_FILE}
- RESULT_VARIABLE changelog_test
- )
- execute_process(COMMAND which gzip
- RESULT_VARIABLE gzip_test
- )
- if (NOT changelog_test EQUAL 0)
- message(FATAL_ERROR "NOTE: 不是常规文件: ${SOURCE_CHANGE_LOG_FILE}")
- endif(NOT changelog_test EQUAL 0)
- if (NOT gzip_test EQUAL 0)
- message(FATAL_ERROR "NOTE: 未安装 gzip, 无法压缩 changelog")
- endif(NOT gzip_test EQUAL 0)
- # 压缩与安装日志文件
- add_custom_command(
- OUTPUT "${CMAKE_BINARY_DIR}/changelog.gz"
- COMMAND gzip -cn9 "${SOURCE_CHANGE_LOG_FILE}" > "${CMAKE_BINARY_DIR}/changelog.gz"
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
- COMMENT "Compressing changelog"
- )
- add_custom_target(changelog ALL DEPENDS "${CMAKE_BINARY_DIR}/changelog.gz")
- # include(GNUInstallDirs)
- set(SPARK_INSTALL_CHANGE_LOG_DIR "/usr/share/doc/${PROJECT_NAME}/")
- install(FILES
- ${CMAKE_BINARY_DIR}/changelog.gz
- debian/copyright
- DESTINATION ${SPARK_INSTALL_CHANGE_LOG_DIR}
- )
- else()
- message(FATAL_ERROR "未找到: ${SOURCE_CHANGE_LOG_FILE}")
- endif(EXISTS ${SOURCE_CHANGE_LOG_FILE})
- endmacro(spark_install_changelog CHANGE_LOG_FILE)
|