CMakeLists.txt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. cmake_minimum_required(VERSION 3.2)
  2. project(servant)
  3. # if(TARS_OPENTRACKING)
  4. # include_directories(${util_SOURCE_DIR}/include ${OPENTRACKING_INC})
  5. # else()
  6. include_directories(${util_SOURCE_DIR}/include)
  7. # endif()
  8. #调用tars2cpp, 生成tars对应的文件
  9. macro(complice_tars OUT_DEPENDS_LIST HEADER INCLUDE)
  10. set(DEPENDS_LIST)
  11. FILE(GLOB SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/*.tars")
  12. set(CLEAN_LIST)
  13. #设置tars生成后, cpp文件因为h文件的include路径
  14. set(HEADER_STRING)
  15. if (NOT "${HEADER}" STREQUAL "")
  16. set(HEADER_STRING "--header=${HEADER}")
  17. endif ()
  18. #设置tars文件搜索路径
  19. set(INCLUDE_STRING "")
  20. set(HEADER_STRING)
  21. if (NOT "${INCLUDE}" STREQUAL "")
  22. set(INCLUDE_STRING "--include=${INCLUDE}")
  23. endif ()
  24. foreach (FILE ${SRC_LIST})
  25. get_filename_component(NAME_WE ${FILE} NAME_WE)
  26. # 生成tars文件
  27. set(TARS_IN ${FILE})
  28. set(TARS_H ${NAME_WE}.h)
  29. add_custom_command(
  30. OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${TARS_H}
  31. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  32. DEPENDS tars2cpp ${FILE}
  33. COMMAND ${TARS2CPP} --with-tars ${HEADER_STRING} ${INCLUDE_STRING} ${TARS_IN}
  34. COMMENT "${TARS2CPP} --with-tars ${HEADER_STRING} ${INCLUDE_STRING} ${TARS_IN}")
  35. list(APPEND DEPENDS_LIST ${CMAKE_CURRENT_SOURCE_DIR}/${TARS_H})
  36. #设置需要清除的文件
  37. get_filename_component(PATH ${FILE} PATH)
  38. list(APPEND CLEAN_LIST ${PATH}/${NAME_WE}.h)
  39. if (EXISTS ${PATH}/${NAME_WE}.cpp)
  40. list(APPEND CLEAN_LIST ${PATH}/${NAME_WE}.cpp)
  41. endif (EXISTS ${PATH}/${NAME_WE}.cpp)
  42. endforeach (FILE)
  43. set(OUT_DEPENDS_LIST ${DEPENDS_LIST})
  44. set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEAN_LIST}")
  45. endmacro()
  46. add_subdirectory(protocol/servant)
  47. add_subdirectory(protocol/framework)
  48. add_subdirectory(tup)
  49. add_subdirectory(libservant)
  50. install(DIRECTORY servant DESTINATION include)
  51. install(DIRECTORY promise DESTINATION include)
  52. install(DIRECTORY tup DESTINATION include)
  53. install(DIRECTORY jmem DESTINATION include)
  54. install(DIRECTORY script DESTINATION .
  55. PATTERN "*.sh"
  56. PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ WORLD_EXECUTE)
  57. install(DIRECTORY makefile DESTINATION .)