CMakeLists.txt 1.8 KB

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