1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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")
|