123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- cmake_minimum_required(VERSION 3.6)
- set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "build type")
- project(srpc
- VERSION 0.9.2
- LANGUAGES C CXX)
- set(INC_DIR ${PROJECT_SOURCE_DIR}/_include CACHE PATH "srpc inc")
- set(LIB_DIR ${PROJECT_SOURCE_DIR}/_lib CACHE PATH "srpc lib")
- set(BIN_DIR ${PROJECT_SOURCE_DIR}/_bin CACHE PATH "srpc bin")
- include(GNUInstallDirs)
- set(CMAKE_CONFIG_INSTALL_FILE ${PROJECT_BINARY_DIR}/config.toinstall.cmake)
- set(CMAKE_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_DIR})
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_DIR})
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_DIR})
- add_custom_target(
- LINK_HEADERS ALL
- COMMENT "link headers..."
- )
- INCLUDE(CMakeLists_Headers.txt)
- macro(makeLink src dest target)
- add_custom_command(
- TARGET ${target} PRE_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dest}
- DEPENDS ${dest}
- )
- endmacro()
- add_custom_command(
- TARGET LINK_HEADERS PRE_BUILD
- COMMAND ${CMAKE_COMMAND} -E make_directory ${INC_DIR}/${PROJECT_NAME}
- )
- foreach(header_file ${INCLUDE_HEADERS})
- string(REPLACE "/" ";" arr ${header_file})
- list(GET arr -1 file_name)
- makeLink(${PROJECT_SOURCE_DIR}/${header_file} ${INC_DIR}/${PROJECT_NAME}/${file_name} LINK_HEADERS)
- endforeach()
- add_subdirectory(src)
- ####CONFIG
- include(CMakePackageConfigHelpers)
- set(CONFIG_INC_DIR ${INC_DIR})
- set(CONFIG_LIB_DIR ${LIB_DIR})
- if(NOT VCPKG_TOOLCHAIN)
- set(CONFIG_BIN_DIR ${BIN_DIR})
- else()
- set(CONFIG_BIN_DIR ${CMAKE_INSTALL_PREFIX}/tools/srpc)
- endif()
- configure_package_config_file(
- ${PROJECT_NAME}-config.cmake.in
- ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-config.cmake
- INSTALL_DESTINATION ${CMAKE_CONFIG_INSTALL_DIR}
- PATH_VARS CONFIG_INC_DIR CONFIG_LIB_DIR CONFIG_BIN_DIR
- )
- set(CONFIG_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR})
- set(CONFIG_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
- set(CONFIG_BIN_DIR ${CMAKE_INSTALL_BINDIR})
- configure_package_config_file(
- ${PROJECT_NAME}-config.cmake.in
- ${CMAKE_CONFIG_INSTALL_FILE}
- INSTALL_DESTINATION ${CMAKE_CONFIG_INSTALL_DIR}
- PATH_VARS CONFIG_INC_DIR CONFIG_LIB_DIR CONFIG_BIN_DIR
- )
- install(
- FILES ${CMAKE_CONFIG_INSTALL_FILE}
- DESTINATION ${CMAKE_CONFIG_INSTALL_DIR}
- COMPONENT devel
- RENAME ${PROJECT_NAME}-config.cmake
- )
- #### PACK
- set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sogou RPC")
- set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
- # set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/pre_script.sh)
- # set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/post_script.sh)
- execute_process(
- COMMAND git log -n1 --format=%ad --date=short
- RESULT_VARIABLE GIT_LOG_RET
- OUTPUT_VARIABLE GIT_YMD
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if (NOT GIT_LOG_RET EQUAL 0)
- set(GIT_YMD 0)
- endif()
- string(REPLACE "-" "" RELEASE_LABEL ${GIT_YMD})
- set(CPACK_RPM_PACKAGE_RELEASE ${RELEASE_LABEL})
- set(CPACK_RPM_COMPONENT_INSTALL ON)
- set(CPACK_COMPONENTS_ALL devel)
- set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
- set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
- set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/lib64/cmake)
- set(PB_PACKAGE_REQUIRED "protobuf-devel")
- set(CPACK_RPM_DEVEL_PACKAGE_REQUIRES "workflow-devel >= 0.9.6, ${PB_PACKAGE_REQUIRED}")
- install(
- FILES ${INCLUDE_HEADERS}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
- COMPONENT devel
- )
- install(
- FILES README.md
- DESTINATION "${CMAKE_INSTALL_DOCDIR}-${PROJECT_VERSION}"
- COMPONENT devel
- )
- set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true") # disable strip
- set(CPACK_GENERATOR "RPM")
- include(CPack)
|