CMakeLists.txt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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}/parser/include
  7. ${vmcore_SOURCE_DIR}/src/include
  8. ${vmcore_SOURCE_DIR}/ofunc/include
  9. ${vmcore_SOURCE_DIR}/md5/include
  10. ${vmcore_SOURCE_DIR}/ofunc/clib/include
  11. )
  12. SET(VMCORE_SRC_DIR
  13. ${vmcore_SOURCE_DIR}/memory
  14. ${vmcore_SOURCE_DIR}/src
  15. ${vmcore_SOURCE_DIR}/gc
  16. ${vmcore_SOURCE_DIR}/file
  17. ${vmcore_SOURCE_DIR}/parser
  18. ${vmcore_SOURCE_DIR}/ofunc/src
  19. ${vmcore_SOURCE_DIR}/ofunc/clib
  20. ${vmcore_SOURCE_DIR}/signalhandler
  21. ${vmcore_SOURCE_DIR}/md5
  22. )
  23. # 添加头文件
  24. INCLUDE_DIRECTORIES(${VMCORE_INCLUDE_DICT} BEFORE)
  25. # 搜索源文件
  26. FOREACH(DIR ${VMCORE_SRC_DIR})
  27. SET(TMP) # 清空
  28. AUX_SOURCE_DIRECTORY(${DIR} TMP)
  29. SET(SRC ${SRC} ${TMP}) # 列表追加
  30. ENDFOREACH()
  31. MESSAGE(STATUS "vmcore src list = ${SRC}")
  32. # 处理依赖库
  33. FIND_PATH(ffih ffi.h REQUIRED)
  34. INCLUDE_DIRECTORIES(${ffih})
  35. FIND_LIBRARY(libffi NAMES ffi REQUIRED)
  36. FIND_LIBRARY(libdl NAMES dl REQUIRED)
  37. IF (libffi AND ffih)
  38. MESSAGE(STATUS "libffi = ${libffi} ffi.h in ${ffih}")
  39. ELSE()
  40. MESSAGE(FATAL_ERROR "not found libffi or ffi.h")
  41. ENDIF()
  42. IF (libdl)
  43. MESSAGE(STATUS "libdl = ${libdl}")
  44. ELSE()
  45. MESSAGE(FATAL_ERROR "not found libdl")
  46. ENDIF()
  47. IF (PG)
  48. ADD_COMPILE_OPTIONS(-pg)
  49. ADD_LINK_OPTIONS(-pg)
  50. ADD_LIBRARY(vmcore STATIC ${SRC}) ## debug模式下, 以静态库形式链接
  51. ELSE()
  52. ADD_LIBRARY(vmcore SHARED ${SRC})
  53. ENDIF()
  54. TARGET_LINK_LIBRARIES(vmcore ${libffi} ${libdl} m)
  55. TARGET_INCLUDE_DIRECTORIES(vmcore PRIVATE VMCORE_INCLUDE_DICT)
  56. SET_TARGET_PROPERTIES(vmcore PROPERTIES
  57. PUBLIC_HEADER ${vmcore_SOURCE_DIR}/include/virtualmath.h # 设置public的头文件
  58. OUTPUT_NAME "vmcore" # 设置输出名
  59. VERSION 3.1 # 设置版本号
  60. )
  61. INSTALL(TARGETS vmcore)