FindDirectX.cmake

main 103 lines · 4.3 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1#-------------------------------------------------------------------
2# This file is part of the CMake build system for OGRE
3# (Object-oriented Graphics Rendering Engine)
4# For the latest info, see http://www.ogre3d.org/
5#
6# The contents of this file are placed in the public domain. Feel
7# free to make use of it in any way you like.
8#-------------------------------------------------------------------
9
10# -----------------------------------------------------------------------------
11# Find DirectX SDK
12# Define:
13# DirectX_FOUND
14# DirectX_INCLUDE_DIR
15# DirectX_LIBRARY
16# DirectX_ROOT_DIR
17
18if(WIN32) # The only platform it makes sense to check for DirectX SDK
19 include(FindPkgMacros)
20 findpkg_begin(DirectX)
21
22 # Get path, convert backslashes as ${ENV_DXSDK_DIR}
23 getenv_path(DXSDK_DIR)
24 getenv_path(DIRECTX_HOME)
25 getenv_path(DIRECTX_ROOT)
26 getenv_path(DIRECTX_BASE)
27
28 # construct search paths
29 set(DirectX_PREFIX_PATH
30 "${DXSDK_DIR}" "${ENV_DXSDK_DIR}"
31 "${DIRECTX_HOME}" "${ENV_DIRECTX_HOME}"
32 "${DIRECTX_ROOT}" "${ENV_DIRECTX_ROOT}"
33 "${DIRECTX_BASE}" "${ENV_DIRECTX_BASE}"
34 "C:/apps_x86/Microsoft DirectX SDK*"
35 "C:/Program Files (x86)/Microsoft DirectX SDK*"
36 "C:/apps/Microsoft DirectX SDK*"
37 "C:/Program Files/Microsoft DirectX SDK*"
38 "$ENV{ProgramFiles}/Microsoft DirectX SDK*"
39 )
40 create_search_paths(DirectX)
41 # redo search if prefix path changed
42 clear_if_changed(DirectX_PREFIX_PATH
43 DirectX_LIBRARY
44 DirectX_INCLUDE_DIR
45 )
46
47 find_path(DirectX_INCLUDE_DIR NAMES d3d9.h HINTS ${DirectX_INC_SEARCH_PATH})
48 # dlls are in DirectX_ROOT_DIR/Developer Runtime/x64|x86
49 # lib files are in DirectX_ROOT_DIR/Lib/x64|x86
50 if(CMAKE_CL_64)
51 set(DirectX_LIBPATH_SUFFIX "x64")
52 else(CMAKE_CL_64)
53 set(DirectX_LIBPATH_SUFFIX "x86")
54 endif(CMAKE_CL_64)
55 find_library(DirectX_LIBRARY NAMES d3d9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
56 find_library(DirectX_D3DX9_LIBRARY NAMES d3dx9 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
57 find_library(DirectX_DXERR_LIBRARY NAMES DxErr HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
58 find_library(DirectX_DXGUID_LIBRARY NAMES dxguid HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
59 find_library(DirectX_DINPUT8_LIBRARY NAMES dinput8 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
60 find_library(DirectX_XINPUT_LIBRARY NAMES xinput HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
61
62 # look for dxgi (needed by both 10 and 11)
63 find_library(DirectX_DXGI_LIBRARY NAMES dxgi HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
64
65 # look for d3dcompiler (needed by 11)
66 find_library(DirectX_D3DCOMPILER_LIBRARY NAMES d3dcompiler HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
67
68 findpkg_finish(DirectX)
69 set(DirectX_LIBRARIES ${DirectX_LIBRARIES}
70 ${DirectX_D3DX9_LIBRARY}
71 ${DirectX_DXERR_LIBRARY}
72 ${DirectX_DXGUID_LIBRARY}
73 ${DirectX_DINPUT8_LIBRARY}
74 )
75
76 mark_as_advanced(DirectX_D3DX9_LIBRARY DirectX_DXERR_LIBRARY DirectX_DXGUID_LIBRARY
77 DirectX_DXGI_LIBRARY DirectX_D3DCOMPILER_LIBRARY
78 DirectX_DINPUT8_LIBRARY DirectX_XINPUT_LIBRARY)
79
80 # look for D3D11 components
81 if (DirectX_FOUND)
82 find_path(DirectX_D3D11_INCLUDE_DIR NAMES D3D11Shader.h HINTS ${DirectX_INC_SEARCH_PATH})
83 get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH)
84 message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}")
85 find_library(DirectX_D3D11_LIBRARY NAMES d3d11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
86 find_library(DirectX_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX})
87 if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY)
88 set(DirectX_D3D11_FOUND TRUE)
89 set(DirectX_D3D11_INCLUDE_DIR ${DirectX_D3D11_INCLUDE_DIR})
90 set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARIES}
91 ${DirectX_D3D11_LIBRARY}
92 ${DirectX_D3DX11_LIBRARY}
93 ${DirectX_DXGI_LIBRARY}
94 ${DirectX_DXERR_LIBRARY}
95 ${DirectX_DXGUID_LIBRARY}
96 ${DirectX_D3DCOMPILER_LIBRARY}
97 )
98 endif ()
99 mark_as_advanced(DirectX_D3D11_INCLUDE_DIR DirectX_D3D11_LIBRARY DirectX_D3DX11_LIBRARY)
100 endif ()
101
102endif(WIN32)
103
Top