CMakefile for OGRE

Edit on Github

有一段时间没写日志了,都有点不知道怎么开始了,汗!

Ogre v1.7.0出来了,暂时只提供原代码,同时代码管理上也转向使用CMake了(OpenCV2.0也转到用CMake)。 Ogre官方提供了一个CMakefile ,但没有说明清楚,试了下,不Work,所以自己去CMake官方查了下DOC,修改成自己想要的。刚学CMake,可能写的不好,所以没提交到Ogre官方Wiki,就拿出来分享下好了。如有什么问题和建议欢迎跟帖~

说明:
  1. 可能只适用了Ogre v1.7版本
  2. 需要先设置四个环境变量,供FindOGRE.cmake 文件查找Ogre用,下面是我的
OGRE_BUILD  - D:\libs\Ogre\v1-7-0RC1\build
OGRE_HOME   - %LIBS_DIR%\Ogre\v1-7-0RC1
OGRE_SOURCE - D:\libs\Ogre\v1-7-0RC1
OIS_HOME    - D:\libs\Ogre\v1-7-0RC1\Dependencies\src\ois-1.2.0
  1. 下面是查找Ogre用的CMake文件,存放位置下面CMAKE_MODULE_PATH处设置
FindOGRE.cmake
FindOIS.cmake
FindPkgMacros.cmake
OgreConfigTargets.cmake
OgreFindFrameworks.cmake
OgreGetVersion.cmake
PreprocessorUtils.cmake
VisualStudioUserFile.vcproj.user.in # 需要修改,见下文
代码目录如下:
CMakeLists.txt
include/
    *.h
src/
    *.cpp
CMakeLists.txt文件
cmake_minimum_required(VERSION 2.6)
SET(PROJ_NAME Ogre_Project) # 工程名
PROJECT(${PROJ_NAME})

set(CMAKE_MODULE_PATH 
    $ENV{OGRE_BUILD}/sdk/CMake # Ogre cmake 路径
    )

include(OgreConfigTargets)

FIND_PACKAGE(OpenGL)
FIND_PACKAGE(OGRE)
FIND_PACKAGE(OIS)

INCLUDE_DIRECTORIES(
    ${OpenGL_INCLUDE_DIR}
    ${OGRE_INCLUDE_DIRS}
    ${OIS_INCLUDE_DIRS}
    ${PROJECT_SOURCE_DIR}/include
    $ENV{OGRE_BUILD}/include
    $ENV{OGRE_HOME}/Dependencies/include
    $ENV{OGRE_HOME}/Samples/Common/include # source version
    )

LINK_DIRECTORIES(
    ${OGRE_LIBRARIES}
    )

FILE(GLOB SRCS src/*.cpp)
FILE(GLOB HDRS include/*.h)

ADD_EXECUTABLE(${PROJ_NAME}
    WIN32 # SUBSYSTEM:WINDOWS
    ${SRCS}
    ${HDRS}
    )

TARGET_LINK_LIBRARIES(${PROJ_NAME}
    ${OpenGL_LIBRARIES}
    ${OIS_LIBRARIES}
    ${OGRE_LIBRARIES}
    )

set(OGRE_TEMPLATES_DIR"${CMAKE_MODULE_PATH}")

set(OGRE_WORK_DIR"$ENV{OGRE_BUILD}")

set(OGRE_BINARY_DIR"$ENV{OGRE_BUILD}")

#FIND_FILE( OLD_VCPROJ_USER_FILES
    #*.user
    #${CMAKE_CURRENT_BINARY_DIR} 
    #)

if (MSVC)
    FILE( REMOVE ${PROJ_NAME}.vcproj.$ENV{USERDOMAIN}.$ENV{USERNAME}.user)
    ogre_create_vcproj_userfile( ${PROJ_NAME} )
endif ()
修改VisualStudioUserFile.vcproj.user.in

生成vcproj.user文件的模板也要修改下,修改

Command="@OGRE_BINARY_DIR@/bin/$(ConfigurationName)/$(TargetFileName)"

Command=""

然后你只要用cmake-gui工具 configure generate 下就可以得到配置好的Ogre工程了。