CMAKE_MINIMUM_REQUIRED(VERSION 3.16) PROJECT(vmcore C) SET(CMAKE_C_STANDARD 11) SET(INCLUDE_DICT ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/parser/include ${CMAKE_CURRENT_SOURCE_DIR}/src/include ${CMAKE_CURRENT_SOURCE_DIR}/ofunc/include ${CMAKE_CURRENT_SOURCE_DIR}/md5/include ) INCLUDE_DIRECTORIES(${INCLUDE_DICT} BEFORE) # 搜索源文件 AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/memory MEM_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/parser PASER_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/file FILE_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/gc GC_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ofunc/src OFUNC_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ofunc/clib CLIB_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/signalhandler HANDLER_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/md5 MD5_LIST) # 处理依赖库 FIND_PATH(ffih ffi.h REQUIRED) INCLUDE_DIRECTORIES(${ffih}) FIND_LIBRARY(libffi NAMES ffi REQUIRED) FIND_LIBRARY(libdl NAMES dl REQUIRED) MESSAGE("libdl = ${libdl}; libffi = ${libffi}") MESSAGE("ffi.h in ${ffih};") ADD_LIBRARY(vmcore SHARED ${SRC_LIST} ${GC_LIST} ${PASER_LIST} ${MEM_LIST} ${FILE_LIST} ${ARGUMENT_LIST} ${OFUNC_LIST} ${HANDLER_LIST} ${CLIB_LIST} ${MD5_LIST}) TARGET_LINK_LIBRARIES(vmcore ${libffi} ${libdl} m) TARGET_INCLUDE_DIRECTORIES(vmcore PRIVATE INCLUDE_DICT) SET_TARGET_PROPERTIES(vmcore PROPERTIES PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/include/virtualmath.h) SET_TARGET_PROPERTIES(vmcore PROPERTIES OUTPUT_NAME "vmcore" VERSION 2.1) INSTALL(TARGETS vmcore)