FindDiaSDK.cmake 3.0 KB

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