VC-LTL.cmake 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # https://github.com/Chuyu-Team/VC-LTL5
  2. #
  3. # VC-LTL自动化加载配置,建议你将此文件单独复制到你的工程再使用,该文件能自动识别当前环境是否存在VC-LTL,并且自动应用。
  4. #
  5. # 使用方法:
  6. # 1. 在“CMakeLists.txt” 添加 “include("VC-LTL helper for cmake.cmake")”。
  7. #
  8. # VC-LTL默认搜索顺序
  9. # 1. “VC-LTL helper for cmake.cmake”所在根目录,即 ${CMAKE_CURRENT_LIST_DIR}
  10. # 2. 当前CMake根目录,即 ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL
  11. # 3. 当前项目根目录,即 ${PROJECT_SOURCE_DIR}/VC-LTL
  12. # 4. 当前CMake父目录,即 ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL
  13. # 5. 当前项目根目录,即 ${PROJECT_SOURCE_DIR}/../VC-LTL
  14. # 6. 注册表HKEY_CURRENT_USER\Code\VC-LTL@Root
  15. #
  16. # 把VC-LTL放在其中一个位置即可,VC-LTL就能被自动引用。
  17. #
  18. # 如果你对默认搜索顺序不满,你可以修改此文件。你也可以直接指定${VC_LTL_Root}宏更加任性的去加载VC-LTL。
  19. #
  20. if(NOT MSVC OR DEFINED __VC_LTL_CMAKE_INCLUDE_GUARD)
  21. return()
  22. endif()
  23. set(__VC_LTL_CMAKE_INCLUDE_GUARD 1)
  24. #####################################################################VC-LTL设置#####################################################################
  25. #控制TargetPlatform版本,目前可用版本为5.1.2600.0 6.0.6000.0(默认) 6.2.9200.0 10.0.10240.0 10.0.19041.0
  26. if(NOT DEFINED WindowsTargetPlatformMinVersion)
  27. set(WindowsTargetPlatformMinVersion "10.0.19041.0" CACHE STRING "" FORCE)
  28. endif()
  29. #启用干净的导入表,消除 ucrt apiset(如:api-ms-win-crt-time-l1-1-0.dll),满足强迫症患者。
  30. if(NOT DEFINED CleanImport)
  31. set(CleanImport "true" CACHE STRING "" FORCE)
  32. endif()
  33. ####################################################################################################################################################
  34. if(NOT VC_LTL_Root)
  35. if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/_msvcrt.h)
  36. set(VC_LTL_Root ${CMAKE_CURRENT_LIST_DIR})
  37. endif()
  38. endif()
  39. if(NOT VC_LTL_Root)
  40. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL/_msvcrt.h)
  41. set(VC_LTL_Root ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL)
  42. endif()
  43. endif()
  44. if(NOT VC_LTL_Root)
  45. if(EXISTS ${PROJECT_SOURCE_DIR}/VC-LTL/_msvcrt.h)
  46. set(VC_LTL_Root ${PROJECT_SOURCE_DIR}/VC-LTL)
  47. endif()
  48. endif()
  49. if(NOT VC_LTL_Root)
  50. if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL/_msvcrt.h)
  51. set(VC_LTL_Root ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL)
  52. endif()
  53. endif()
  54. if(NOT VC_LTL_Root)
  55. if(EXISTS ${PROJECT_SOURCE_DIR}/../VC-LTL/_msvcrt.h)
  56. set(VC_LTL_Root ${PROJECT_SOURCE_DIR}/../VC-LTL)
  57. endif()
  58. endif()
  59. if(NOT VC_LTL_Root)
  60. EXECUTE_PROCESS(COMMAND reg query "HKEY_CURRENT_USER\\Code\\VC-LTL" -v "Root"
  61. OUTPUT_VARIABLE FOUND_FILE
  62. ERROR_VARIABLE ERROR_INFO
  63. )
  64. string(REGEX MATCH "[a-zA-Z]:\\\\.+\\\\"
  65. FOUND_LTL
  66. ${FOUND_FILE})
  67. if (NOT ${FOUND_LTL} STREQUAL "")
  68. set(VC_LTL_Root ${FOUND_LTL})
  69. endif()
  70. if(NOT DEFINED VC_LTL_Root)
  71. string(REGEX MATCH "\\\\\\\\.+\\\\" FOUND_LTL ${FOUND_FILE})
  72. if (NOT ${FOUND_LTL} STREQUAL "")
  73. set(VC_LTL_Root ${FOUND_LTL})
  74. endif()
  75. endif()
  76. endif()
  77. if(VC_LTL_Root)
  78. include("${VC_LTL_Root}\\config\\config.cmake")
  79. endif()