CMakeLists.txt
cmake_minimum_required(VERSION 2.6) project(OgreApp) if (WIN32) set (CMAKE_MODULE_PATH "$ENV{OGRE_HOME}/CMake/;${CMAKE_MODULE_PATH}") set (OGRE_SAMPLES_INCLUDEPATH $ENV{OGRE_HOME}/Samples/include) endif (WIN32) if (UNIX) if (EXISTS "/usr/local/lib/OGRE/cmake") set (CMAKE_MODULE_PATH "/usr/local/lib/OGRE/cmake/;${CMAKE_MODULE_PATH}") set (OGRE_SAMPLES_INCLUDEPATH "/usr/local/share/OGRE/samples/Common/include/") elseif (EXISTS "/usr/lib/OGRE/cmake") set (CMAKE_MODULE_PATH "/usr/lib/OGRE/cmake/;${CMAKE_MODULE_PATH}") set (OGRE_SAMPLES_INCLUDEPATH "/usr/share/OGRE/samples/Common/include/") else () message(SEND_ERROR "Failed to find module path.") endif () endif (UNIX) if (CMAKE_BUILD_TYPE STREQUAL "") # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up # differentiation between debug and release builds. set ( CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: None (CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) endif () set (CMAKE_DEBUG_POSTFIX "_d") set (CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/dist") find_package (OGRE REQUIRED) find_package (OIS REQUIRED) if (NOT OIS_FOUND) message(SEND_ERROR "Failed to find OIS.") endif () find_package (CEGUI REQUIRED) if (NOT CEGUI_FOUND) message (SEND_ERROR "Failed to find CEGUI.") endif () # Find Boost if (NOT OGRE_BUILD_PLATFORM_IPHONE) if (WIN32 OR APPLE) set (Boost_USE_STATIC_LIBS TRUE) else () # Statically linking boost to a dynamic Ogre build doesn't work on Linux 64bit set (Boost_USE_STATIC_LIBS ${OGRE_STATIC}) endif () if (MINGW) # this is probably a bug in CMake: the boost find module tries to look for # boost libraries with name libboost_*, but CMake already prefixes library # search names with "lib". This is the workaround. set (CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "") endif () set (Boost_ADDITIONAL_VERSIONS "1.44" "1.44.0" "1.42" "1.42.0" "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37" ) # Components that need linking (NB does not include header-only components like bind) set (OGRE_BOOST_COMPONENTS thread date_time) find_package (Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) if (NOT Boost_FOUND) # Try again with the other type of libs set (Boost_USE_STATIC_LIBS NOT ${Boost_USE_STATIC_LIBS}) find_package (Boost COMPONENTS ${OGRE_BOOST_COMPONENTS} QUIET) endif () find_package (Boost QUIET) # Set up referencing of Boost include_directories (${Boost_INCLUDE_DIR}) add_definitions (-DBOOST_ALL_NO_LIB) set (OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES}) endif () set (HDRS ./BasicApp.h) set (SRCS ./BasicApp.cpp) include_directories ( ${OIS_INCLUDE_DIRS} ${OGRE_INCLUDE_DIRS} ${OGRE_SAMPLES_INCLUDEPATH} ${CEGUI_INCLUDE_DIR} ${CEGUI_OgreRenderer_INCLUDE_DIRS}) add_executable (OgreApp WIN32 ${HDRS} ${SRCS}) set_target_properties (OgreApp PROPERTIES DEBUG_POSTFIX _d) target_link_libraries ( OgreApp ${OIS_LIBRARIES} ${OGRE_LIBRARIES} ${OGRE_Terrain_LIBRARIES} ${CEGUI_LIBRARIES} ${CEGUI_OgreRenderer_LIBRARIES}) file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dist/bin) file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dist/media) # post-build copy for win32 if (WIN32 AND NOT MINGW) add_custom_command ( TARGET OgreApp PRE_BUILD COMMAND if not exist .\\dist\\bin mkdir .\\dist\\bin) add_custom_command ( TARGET OgreApp POST_BUILD COMMAND copy \"$(TargetPath)\" .\\dist\\bin) endif (WIN32 AND NOT MINGW) if (MINGW OR UNIX) set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/dist/bin) endif (MINGW OR UNIX) if (WIN32) install ( TARGETS OgreApp RUNTIME DESTINATION bin CONFIGURATIONS All) install ( DIRECTORY ${CMAKE_SOURCE_DIR}/dist/Media DESTINATION ./ CONFIGURATIONS Release RelWithDebInfo Debug) install ( FILES ${CMAKE_SOURCE_DIR}/dist/bin/plugins.cfg ${CMAKE_SOURCE_DIR}/dist/bin/resources.cfg DESTINATION bin CONFIGURATIONS Release RelWithDebInfo) install ( FILES ${CMAKE_SOURCE_DIR}/dist/bin/plugins_d.cfg ${CMAKE_SOURCE_DIR}/dist/bin/resources_d.cfg DESTINATION bin CONFIGURATIONS Debug) install ( FILES ${OGRE_PLUGIN_DIR_REL}/OgreMain.dll ${OGRE_PLUGIN_DIR_REL}/RenderSystem_Direct3D9.dll ${OGRE_PLUGIN_DIR_REL}/RenderSystem_GL.dll ${OGRE_PLUGIN_DIR_REL}/libOIS.dll DESTINATION bin CONFIGURATIONS Release RelWithDebInfo) install ( FILES ${OGRE_PLUGIN_DIR_DBG}/OgreMain_d.dll ${OGRE_PLUGIN_DIR_DBG}/RenderSystem_Direct3D9_d.dll ${OGRE_PLUGIN_DIR_DBG}/RenderSystem_GL_d.dll ${OGRE_PLUGIN_DIR_DBG}/libOIS_d.dll DESTINATION bin CONFIGURATIONS Debug) install( FILES ${Boost_DATE_TIME_LIBRARY_RELEASE} ${Boost_THREAD_LIBRARY_RELEASE} DESTINATION bin CONFIGURATIONS Release RelWithDebInfo) install ( FILES ${Boost_DATE_TIME_LIBRARY_DEBUG} ${Boost_THREAD_LIBRARY_DEBUG} DESTINATION bin CONFIGURATIONS Debug) endif (WIN32) if (UNIX) install ( TARGETS OgreApp RUNTIME DESTINATION bin CONFIGURATIONS All) install ( DIRECTORY ${CMAKE_SOURCE_DIR}/dist/media DESTINATION ./ CONFIGURATIONS Release RelWithDebInfo Debug) install ( FILES ${CMAKE_SOURCE_DIR}/dist/bin/plugins.cfg ${CMAKE_SOURCE_DIR}/dist/bin/resources.cfg DESTINATION bin CONFIGURATIONS Release RelWithDebInfo Debug) endif (UNIX)