CMakeLists.txt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  2. PROJECT(vmcore C)
  3. SET(CMAKE_C_STANDARD 11)
  4. SET(VMCORE_INCLUDE_DICT
  5. ${vmcore_SOURCE_DIR}/include
  6. ${vmcore_SOURCE_DIR}/src/include
  7. ${vmcore_SOURCE_DIR}/ofunc/include
  8. )
  9. SET(VMCORE_SRC_DIR
  10. ${vmcore_SOURCE_DIR}/src
  11. )
  12. # 搜索源文件
  13. FOREACH(DIR ${VMCORE_SRC_DIR})
  14. SET(TMP) # 清空
  15. AUX_SOURCE_DIRECTORY(${DIR} TMP)
  16. SET(SRC ${SRC} ${TMP}) # 列表追加
  17. ENDFOREACH()
  18. MESSAGE(STATUS "vmcore src list = ${SRC}")
  19. IF (PG)
  20. ADD_COMPILE_OPTIONS(-pg)
  21. ADD_LINK_OPTIONS(-pg)
  22. ENDIF()
  23. ADD_COMPILE_OPTIONS(-fPIC)
  24. # 处理内部依赖库
  25. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/signalhandler)
  26. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/memory)
  27. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/md5)
  28. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/file)
  29. # 添加子目录(没有生成新的lib)
  30. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/parser)
  31. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/ofunc)
  32. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/gc)
  33. # 添加头文件
  34. INCLUDE_DIRECTORIES(${VMCORE_INCLUDE_DICT} BEFORE)
  35. INCLUDE_DIRECTORIES(${vm_ofunc_include} BEFORE)
  36. INCLUDE_DIRECTORIES(${vm_parser_include} BEFORE)
  37. MESSAGE(STATUS "VMCORE_INCLUDE_DICT = ${VMCORE_INCLUDE_DICT}")
  38. # 编译和链接vmcore
  39. ADD_SUBDIRECTORY(${vmcore_SOURCE_DIR}/src)
  40. TARGET_LINK_LIBRARIES(vmcore_src vm_signal vm_memory vm_md5 vm_file)
  41. # 安装vmlib
  42. SET(VMLIB_PATH ${CMAKE_INSTALL_PREFIX}/vmlib)
  43. SET(CLIB_PATH ${CMAKE_INSTALL_PREFIX}/lib)
  44. INSTALL(DIRECTORY ${vmcore_SOURCE_DIR}/vmlib/ DESTINATION ${VMLIB_PATH})
  45. INSTALL(CODE "SET(ENV{VIRTUALMATHPATH} \"${VMLIB_PATH},${CLIB_PATH}\")") # 设置系统环境变量(安装时候执行)
  46. INSTALL(CODE "MESSAGE(STATUS \"Now Install\")") # 安装时运行
  47. # 安装clib
  48. ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/clib)
  49. # 结束语
  50. MESSAGE(STATUS "vmcore cmake configure finish")