CMakeLists.txt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  2. PROJECT(vmcore C)
  3. SET(CMAKE_C_STANDARD 11)
  4. SET(INCLUDE_DICT
  5. ${CMAKE_CURRENT_SOURCE_DIR}/include
  6. ${CMAKE_CURRENT_SOURCE_DIR}/parser/include
  7. ${CMAKE_CURRENT_SOURCE_DIR}/src/include
  8. ${CMAKE_CURRENT_SOURCE_DIR}/ofunc/include
  9. ${CMAKE_CURRENT_SOURCE_DIR}/md5/include
  10. )
  11. INCLUDE_DIRECTORIES(${INCLUDE_DICT} BEFORE)
  12. # 搜索源文件
  13. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/memory MEM_LIST)
  14. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/parser PASER_LIST)
  15. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
  16. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/file FILE_LIST)
  17. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/gc GC_LIST)
  18. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ofunc/src OFUNC_LIST)
  19. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ofunc/clib CLIB_LIST)
  20. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/signalhandler HANDLER_LIST)
  21. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/md5 MD5_LIST)
  22. # 处理依赖库
  23. FIND_PATH(ffih ffi.h REQUIRED)
  24. INCLUDE_DIRECTORIES(${ffih})
  25. FIND_LIBRARY(libffi NAMES ffi REQUIRED)
  26. FIND_LIBRARY(libdl NAMES dl REQUIRED)
  27. MESSAGE("libdl = ${libdl}; libffi = ${libffi}")
  28. MESSAGE("ffi.h in ${ffih};")
  29. ADD_LIBRARY(vmcore SHARED ${SRC_LIST} ${GC_LIST} ${PASER_LIST} ${MEM_LIST} ${FILE_LIST} ${ARGUMENT_LIST} ${OFUNC_LIST} ${HANDLER_LIST} ${CLIB_LIST} ${MD5_LIST})
  30. TARGET_LINK_LIBRARIES(vmcore ${libffi} ${libdl} m)
  31. TARGET_INCLUDE_DIRECTORIES(vmcore PRIVATE INCLUDE_DICT)
  32. SET_TARGET_PROPERTIES(vmcore PROPERTIES PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/include/virtualmath.h)
  33. SET_TARGET_PROPERTIES(vmcore PROPERTIES OUTPUT_NAME "vmcore" VERSION 2.1)
  34. INSTALL(TARGETS vmcore)