* Improve cmake files for windows - works for me now :)

Thanks to Lumirion for helpful suggestions.
FindDirectX.cmake shamelessly yet not ungratefully stolen from apitrace (https://github.com/apitrace/apitrace)
This commit is contained in:
shlainn 2011-10-15 19:15:55 +02:00
parent e56ed86684
commit f27b371b86
4 changed files with 195 additions and 8 deletions

View File

@ -30,6 +30,10 @@ option(BUILD_TOOLS "Build Tools" 0)
find_package(Platform REQUIRED)
find_package(OpenSSL REQUIRED)
if(WIN32)
find_package(DirectX)
endif()
# VS100 uses MSBuild.exe instead of devenv.com, so force it to use devenv.com
if(WIN32 AND MSVC_VERSION MATCHES 1600)

178
cmake/FindDirectX.cmake Normal file
View File

@ -0,0 +1,178 @@
# - try to find DirectX include dirs and libraries
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
find_path (DirectX_ROOT_DIR
Include/d3d9.h
PATHS
"$ENV{DXSDK_DIR}"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2010)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (February 2010)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2009)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2008)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2008)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2008)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (November 2007)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2007)"
"$ENV{ProgramFiles}/Microsoft DirectX SDK"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2010)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (February 2010)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2009)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2008)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2008)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2008)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (November 2007)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2007)"
"$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK"
DOC "DirectX SDK root directory")
find_path (DirectX_D3D_INCLUDE_DIR d3d.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3d.h resides")
find_path (DirectX_D3DX_INCLUDE_DIR d3dx.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3dx.h resides")
find_library (DirectX_DDRAW_LIBRARY ddraw
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where ddraw resides")
find_library (DirectX_D3DX_LIBRARY d3dx
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3dx resides")
if (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY)
set (DirectX_D3D_FOUND 1)
if (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY)
set (DirectX_D3DX_FOUND 1)
endif (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY)
endif (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY)
find_path (DirectX_D3D8_INCLUDE_DIR d3d8.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3d8.h resides")
find_path (DirectX_D3DX8_INCLUDE_DIR d3dx8.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3dx8.h resides")
find_library (DirectX_D3D8_LIBRARY d3d8
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3d8 resides")
find_library (DirectX_D3DX8_LIBRARY d3dx8
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3dx8 resides")
if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY)
set (DirectX_D3D8_FOUND 1)
if (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY)
set (DirectX_D3DX8_FOUND 1)
endif (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY)
endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY)
find_path (DirectX_D3D9_INCLUDE_DIR d3d9.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3d9.h resides")
find_path (DirectX_D3DX9_INCLUDE_DIR d3dx9.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3dx9.h resides")
find_library (DirectX_D3D9_LIBRARY d3d9
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3d9 resides")
find_library (DirectX_D3DX9_LIBRARY d3dx9
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3dx9 resides")
if (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY)
set (DirectX_D3D9_FOUND 1)
if (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY)
set (DirectX_D3DX9_FOUND 1)
endif (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY)
endif (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY)
find_path (DirectX_D3D10_INCLUDE_DIR d3d10.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3d10.h resides")
find_path (DirectX_D3DX10_INCLUDE_DIR d3dx10.h
PATHS
"${DirectX_ROOT_DIR}/Include"
DOC "The directory where d3dx10.h resides")
find_library (DirectX_D3D10_LIBRARY d3d10
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3d10 resides")
find_library (DirectX_D3DX10_LIBRARY d3dx10
PATHS
"${DirectX_ROOT_DIR}/Lib/x86"
DOC "The directory where d3dx10 resides")
if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY)
set (DirectX_D3D10_FOUND 1)
if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY)
set (DirectX_D3DX10_FOUND 1)
endif (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY)
endif (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY)
mark_as_advanced(
DirectX_D3D_INCLUDE_DIR
DirectX_D3D_INCLUDE_DIR
DirectX_DDRAW_LIBRARY
DirectX_DDRAW_LIBRARY
DirectX_D3DX_INCLUDE_DIR
DirectX_D3DX_INCLUDE_DIR
DirectX_D3DX_LIBRARY
DirectX_D3DX_LIBRARY
DirectX_D3D8_INCLUDE_DIR
DirectX_D3D8_INCLUDE_DIR
DirectX_D3D8_LIBRARY
DirectX_D3D8_LIBRARY
DirectX_D3DX8_INCLUDE_DIR
DirectX_D3DX8_INCLUDE_DIR
DirectX_D3DX8_LIBRARY
DirectX_D3DX8_LIBRARY
DirectX_D3D9_INCLUDE_DIR
DirectX_D3D9_LIBRARY
DirectX_D3DX9_INCLUDE_DIR
DirectX_D3DX9_LIBRARY
DirectX_D3D10_INCLUDE_DIR
DirectX_D3D10_LIBRARY
DirectX_D3DX10_INCLUDE_DIR
DirectX_D3DX10_LIBRARY
)
endif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
mark_as_advanced (
DirectX_D3D_FOUND
DirectX_D3DX_FOUND
DirectX_D3D8_FOUND
DirectX_D3DX8_FOUND
DirectX_D3D9_FOUND
DirectX_D3DX9_FOUND
DirectX_D3D10_FOUND
DirectX_D3DX10_FOUND
)

View File

@ -85,7 +85,7 @@ to the compiler settings: -DIRR_COMPILE_WITH_DX9_DEV_PACK
and this to the linker settings: -ld3dx9 -ld3dx8 **/
#if defined(_IRR_WINDOWS_API_) && (!defined(__GNUC__) || defined(IRR_COMPILE_WITH_DX9_DEV_PACK))
#define _IRR_COMPILE_WITH_DIRECT3D_8_
// #define _IRR_COMPILE_WITH_DIRECT3D_8_
#define _IRR_COMPILE_WITH_DIRECT3D_9_
#endif

View File

@ -1,9 +1,11 @@
include_directories (${PROJECT_SOURCE_DIR}/src/dep/include ${PROJECT_SOURCE_DIR}/src/dep/include/irrlicht)
set(INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/dep/include ${PROJECT_SOURCE_DIR}/src/dep/include/irrlicht ${PROJECT_SOURCE_DIR}/src/dep/include/zlib)
if(WIN32)
set(LIBTYPE SHARED)
set(INCLUDE_DIRS ${INCLUDE_DIRS} ${DirectX_D3D9_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
else()
set(LIBTYPE STATIC)
endif()
include_directories(${INCLUDE_DIRS})
add_library(irrlicht ${LIBTYPE} # this may be considered a hack.
@ -106,11 +108,11 @@ CColladaMeshWriter.cpp
CColorConverter.cpp
CCSMLoader.cpp
CCubeSceneNode.cpp
CD3D8Driver.cpp
CD3D8NormalMapRenderer.cpp
CD3D8ParallaxMapRenderer.cpp
CD3D8ShaderMaterialRenderer.cpp
CD3D8Texture.cpp
# CD3D8Driver.cpp
# CD3D8NormalMapRenderer.cpp
# CD3D8ParallaxMapRenderer.cpp
# CD3D8ShaderMaterialRenderer.cpp
# CD3D8Texture.cpp
CD3D9Driver.cpp
CD3D9HLSLMaterialRenderer.cpp
CD3D9NormalMapRenderer.cpp
@ -291,4 +293,7 @@ Irrlicht.cpp
irrXML.cpp
os.cpp
)
SET_TARGET_PROPERTIES (irrlicht PROPERTIES DEFINE_SYMBOL "IRRLICHT_EXPORTS" )
if(WIN32)
SET_TARGET_PROPERTIES (irrlicht PROPERTIES DEFINE_SYMBOL "IRRLICHT_EXPORTS" )
target_link_libraries (irrlicht ${DirectX_D3D9_LIBRARY} ${DirectX_D3DX9_LIBRARY} Winmm)
endif()