CMAKE_MINIMUM_REQUIRED(VERSION 3.16) PROJECT(VirtualMath C) SET(CMAKE_C_STANDARD 11) OPTION(GC "GC" ON) OPTION(PG "PG" OFF) OPTION(SET_DEBUG "SET_DEBUG" ON) IF (SET_DEBUG) ADD_DEFINITIONS(-DDEBUG=1) ELSE() ADD_DEFINITIONS(-DDEBUG=0) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") ENDIF() IF (NOT PG) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib-${CMAKE_BUILD_TYPE}) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin-${CMAKE_BUILD_TYPE}) ELSE() SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib-pg${CMAKE_BUILD_TYPE}) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin-pg${CMAKE_BUILD_TYPE}) ENDIF() SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(HELLOVM_INCLUDE_DICT ${VirtualMath_SOURCE_DIR}/include ${VirtualMath_SOURCE_DIR}/vmcore/include ) IF (GC) ADD_DEFINITIONS(-DSTART_GC=1) ELSE() ADD_DEFINITIONS(-DSTART_GC=0) ENDIF() ADD_DEFINITIONS(-DCC=\"${CMAKE_C_COMPILER}\") ADD_DEFINITIONS(-DSYS=\"${CMAKE_SYSTEM}.${CMAKE_SYSTEM_PROCESSOR}\") INCLUDE_DIRECTORIES(${HELLOVM_INCLUDE_DICT} BEFORE) AUX_SOURCE_DIRECTORY(${VirtualMath_SOURCE_DIR}/src SRC_LIST) AUX_SOURCE_DIRECTORY(${VirtualMath_SOURCE_DIR}/argument SRC_LIST) MESSAGE(STATUS "hellovm src = ${SRC_LIST}") MESSAGE(STATUS "project dir is ${VirtualMath_SOURCE_DIR}") MESSAGE(STATUS "cmake file in is ${CMAKE_CURRENT_SOURCE_DIR}") MESSAGE(STATUS "vmcore on ${vmcore_BINARY_DIR}") LINK_DIRECTORIES(${vmcore_BINARY_DIR}) # 添加vmcore的构建目录为寻找lib的目录 ADD_SUBDIRECTORY(${VirtualMath_SOURCE_DIR}/vmcore) IF (PG) ADD_COMPILE_OPTIONS(-pg) ADD_LINK_OPTIONS(-pg) ENDIF() ADD_EXECUTABLE(VirtualMath main.c ${SRC_LIST}) TARGET_LINK_LIBRARIES(VirtualMath vmcore_src) TARGET_INCLUDE_DIRECTORIES(vmcore_src PRIVATE HELLOVM_INCLUDE_DICT) ADD_DEPENDENCIES(VirtualMath vmcore_src) # 添加依赖关系 SET_TARGET_PROPERTIES(VirtualMath PROPERTIES OUTPUT_NAME "hellovm" # 设置输出名 INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" # 设置rpath ) INSTALL(TARGETS VirtualMath) MESSAGE(STATUS "hellovm cmake configure finish")