CMakeLists.txt 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  2. PROJECT(VirtualMath C)
  3. SET(CMAKE_C_STANDARD 11)
  4. OPTION(GC "GC" ON)
  5. OPTION(PG "PG" OFF)
  6. OPTION(SET_DEBUG "SET_DEBUG" ON)
  7. IF (NOT PG)
  8. SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib-${CMAKE_BUILD_TYPE})
  9. SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin-${CMAKE_BUILD_TYPE})
  10. ELSE()
  11. SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib-pg${CMAKE_BUILD_TYPE})
  12. SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin-pg${CMAKE_BUILD_TYPE})
  13. ENDIF()
  14. SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
  15. SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
  16. SET(HELLOVM_INCLUDE_DICT
  17. ${CMAKE_CURRENT_SOURCE_DIR}/include
  18. ${CMAKE_CURRENT_SOURCE_DIR}/vmcore/include
  19. )
  20. IF (SET_DEBUG)
  21. ADD_DEFINITIONS(-DDEBUG=1)
  22. ELSE()
  23. ADD_DEFINITIONS(-DDEBUG=0)
  24. ENDIF()
  25. IF (GC)
  26. ADD_DEFINITIONS(-DSTART_GC=1)
  27. ELSE()
  28. ADD_DEFINITIONS(-DSTART_GC=0) # TODO-szh 处理不启动gc
  29. ENDIF()
  30. ADD_DEFINITIONS(-DCC=\"${CMAKE_C_COMPILER}\")
  31. ADD_DEFINITIONS(-DSYS=\"${CMAKE_SYSTEM}.${CMAKE_SYSTEM_PROCESSOR}\")
  32. INCLUDE_DIRECTORIES(${HELLOVM_INCLUDE_DICT} BEFORE)
  33. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
  34. AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/argument SRC_LIST)
  35. MESSAGE(STATUS "hellovm src = ${SRC_LIST}")
  36. MESSAGE(STATUS "project dir is ${PROJECT_SOURCE_DIR}")
  37. MESSAGE(STATUS "cmake file in is ${CMAKE_CURRENT_SOURCE_DIR}")
  38. MESSAGE(STATUS "vmcore on ${vmcore_BINARY_DIR}")
  39. LINK_DIRECTORIES(${vmcore_BINARY_DIR}) # 添加vmcore的构建目录为寻找lib的目录
  40. ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/vmcore)
  41. IF (PG)
  42. ADD_COMPILE_OPTIONS(-pg)
  43. ADD_LINK_OPTIONS(-pg)
  44. ENDIF()
  45. ADD_EXECUTABLE(VirtualMath main.c ${SRC_LIST})
  46. TARGET_LINK_LIBRARIES(VirtualMath vmcore)
  47. TARGET_INCLUDE_DIRECTORIES(vmcore PRIVATE HELLOVM_INCLUDE_DICT)
  48. ADD_DEPENDENCIES(VirtualMath vmcore) # 添加依赖关系
  49. SET_TARGET_PROPERTIES(VirtualMath PROPERTIES
  50. OUTPUT_NAME "hellovm" # 设置输出名
  51. INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" # 设置rpath
  52. )
  53. INSTALL(TARGETS VirtualMath)