FindDiaSDK.cmake 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Find the DIA SDK path.
  2. get_filename_component(VS_PATH32 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0;InstallDir]" ABSOLUTE CACHE)
  3. get_filename_component(VS_PATH64 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\VisualStudio\\14.0;InstallDir]" ABSOLUTE CACHE)
  4. # VS_PATH32 will be something like C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE
  5. # Also look for in vs15 or vs16 install.
  6. set(PROGRAMFILES_X86 "ProgramFiles(x86)")
  7. set(VS_PATH32 "$ENV{${PROGRAMFILES_X86}}/Microsoft Visual Studio")
  8. get_filename_component(VS15_C_PATH32 "${VS_PATH32}/2017/Community/Common7/IDE" ABSOLUTE CACHE)
  9. get_filename_component(VS15_P_PATH32 "${VS_PATH32}/2017/Professional/Common7/IDE" ABSOLUTE CACHE)
  10. get_filename_component(VS15_E_PATH32 "${VS_PATH32}/2017/Enterprise/Common7/IDE" ABSOLUTE CACHE)
  11. # Starting in VS 15.2, vswhere is included.
  12. # Unclear what the right component to search for is, might be Microsoft.VisualStudio.Component.VC.DiagnosticTools
  13. # (although the friendly name of that is C++ profiling tools). The toolset is the most likely target.
  14. execute_process(
  15. COMMAND "${VS_PATH32}/Installer/vswhere.exe" -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
  16. OUTPUT_VARIABLE VSWHERE_LATEST
  17. ERROR_QUIET
  18. OUTPUT_STRIP_TRAILING_WHITESPACE
  19. )
  20. # Find the DIA SDK path, it will typically look something like this.
  21. # C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\DIA SDK\include
  22. # C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\DIA SDK\include
  23. # C:\Program Files (x86)\Microsoft Visual Studio 14.0\DIA SDK\include
  24. find_path(DIASDK_INCLUDE_DIR # Set variable DIASDK_INCLUDE_DIR
  25. dia2.h # Find a path with dia2.h
  26. HINTS "${VSWHERE_LATEST}/DIA SDK/include"
  27. HINTS "${VS15_C_PATH32}/../../DIA SDK/include"
  28. HINTS "${VS15_P_PATH32}/../../DIA SDK/include"
  29. HINTS "${VS15_E_PATH32}/../../DIA SDK/include"
  30. HINTS "${VS_PATH64}/../../DIA SDK/include"
  31. HINTS "${VS_PATH32}/../../DIA SDK/include"
  32. DOC "path to DIA SDK header files"
  33. )
  34. if (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" )
  35. find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib
  36. HINTS ${DIASDK_INCLUDE_DIR}/../lib/amd64 )
  37. elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" )
  38. find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib
  39. HINTS ${DIASDK_INCLUDE_DIR}/../lib/arm )
  40. else (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" )
  41. find_library(DIASDK_GUIDS_LIBRARY NAMES diaguids.lib
  42. HINTS ${DIASDK_INCLUDE_DIR}/../lib )
  43. endif (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" )
  44. set(DIASDK_LIBRARIES ${DIASDK_GUIDS_LIBRARY})
  45. set(DIASDK_INCLUDE_DIRS ${DIASDK_INCLUDE_DIR})
  46. include(FindPackageHandleStandardArgs)
  47. # handle the QUIETLY and REQUIRED arguments and set DIASDK_FOUND to TRUE
  48. # if all listed variables are TRUE
  49. find_package_handle_standard_args(DiaSDK DEFAULT_MSG
  50. DIASDK_LIBRARIES DIASDK_INCLUDE_DIR)
  51. mark_as_advanced(DIASDK_INCLUDE_DIRS DIASDK_LIBRARIES)