CMAKE_MINIMUM_REQUIRED(VERSION 3.16) PROJECT(VirtualMath C) SET(CMAKE_C_STANDARD 11) OPTION(GC "GC" ON) OPTION(SET_DEBUG "SET_DEBUG" ON) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib-${CMAKE_BUILD_TYPE}) SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin-${CMAKE_BUILD_TYPE}) IF (${SET_DEBUG}) ADD_DEFINITIONS(-DDEBUG=1) ELSE() ADD_DEFINITIONS(-DDEBUG=0) ENDIF() 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(${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/vmcore/include BEFORE) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/argument ARGUMENT_LIST) MESSAGE("project dir is ${PROJECT_SOURCE_DIR}") MESSAGE("cmake file in is ${CMAKE_CURRENT_SOURCE_DIR}") MESSAGE("vmcore on ${vmcore_BINARY_DIR}") LINK_DIRECTORIES(${vmcore_BINARY_DIR}) # 添加vmcore的构建目录为寻找lib的目录 ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/vmcore) ADD_EXECUTABLE(VirtualMath main.c ${SRC_LIST} ${ARGUMENT_LIST}) TARGET_LINK_LIBRARIES(VirtualMath vmcore) SET_TARGET_PROPERTIES(VirtualMath PROPERTIES OUTPUT_NAME "hellovm") set_target_properties(VirtualMath PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # 添加rpath INSTALL(TARGETS VirtualMath)