Created
December 22, 2011 02:28
-
-
Save greyfade/1508614 to your computer and use it in GitHub Desktop.
a cmake example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 2.8) | |
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" ${CMAKE_MODULE_PATH}) | |
# default configuration | |
set(USE_SFML OFF CACHE BOOL "Prefer SFML framework") | |
set(USE_GLFW ON CACHE BOOL "Prefer GLFW framework") | |
project(r3d CXX C) | |
# add GCC-specific compile flags | |
if(CMAKE_COMPILER_IS_GNUCXX) | |
include(CheckCXXCompilerFlag) | |
CHECK_CXX_COMPILER_FLAG("-std=c++0x" USE_CXX0X) | |
if(USE_CXX0X) | |
set(CMAKE_CXX_FLAGS "-std=c++0x -pedantic" CACHE STRING "" FORCE) | |
endif(USE_CXX0X) | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror" CACHE STRING "" FORCE) | |
set(CMAKE_C_FLAGS "-Wall -Werror" CACHE STRING "" FORCE) | |
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -pg" CACHE STRING "" FORCE) | |
set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "" FORCE) | |
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -pg" CACHE STRING "" FORCE) | |
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os" CACHE STRING "" FORCE) | |
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -pg " CACHE STRING "" FORCE) | |
set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "" FORCE) | |
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -pg" CACHE STRING "" FORCE) | |
set(CMAKE_C_FLAGS_MINSIZEREL "-Os" CACHE STRING "" FORCE) | |
endif(CMAKE_COMPILER_IS_GNUCXX) | |
add_executable(r3d main.cpp) | |
# make sure Boost is installed | |
set(Boost_USE_STATIC_LIBS ON) | |
set(Boost_USE_MULTITHREADED ON) | |
find_package(Boost 1.45 REQUIRED system thread signals filesystem) | |
# make sure PhysFS is installed | |
find_package(PhysFS REQUIRED) | |
include_directories(${PHYSFS_INCLUDE_DIR}) | |
target_link_libraries(r3d ${PHYSFS_LIBRARY}) | |
# TODO: If OpenGL isn't found, we should complain loudly since an | |
# appropriate alternative graph driver is unavailable. | |
# The plan is to allow someone to contribute a DirectX driver | |
# or produce an alternative as needs arise. | |
find_package(OpenGL) | |
if(OPENGL_FOUND) | |
include_directories(${OPENGL_INCLUDE_DIR}) | |
link_directories(${OPENGL_LIBRARIES}) | |
target_link_libraries(r3d ${OPENGL_LIBRARIES}) | |
endif(OPENGL_FOUND) | |
find_package(X11) | |
if(X11_FOUND) | |
include_directories(${X11_INCLUDE_DIR}) | |
link_directories(${X11_LIBRARIES} ${X11_Xrandr_LIB}) | |
target_link_libraries(r3d ${X11_LIBRARIES} ${X11_Xrandr_LIB}) | |
endif(X11_FOUND) | |
# Look for Eigen2 | |
find_package(Eigen2 REQUIRED) | |
include_directories(${EIGEN2_INCLUDE_DIR}) | |
find_package(Assimp) | |
if(ASSIMP_FOUND) | |
include_directories(${ASSIMP_INCLUDE_DIR}) | |
endif(ASSIMP_FOUND) | |
if(USE_GLFW) | |
set( GLFW_SEARCH_PATHS | |
/usr/include | |
/usr/lib | |
/usr/local/include | |
/usr/local/lib | |
${GLFW_PATH} | |
${GLFW_PATH}/include | |
${GLFW_PATH}/lib | |
${GLFW_PATH}/lib/win32/Release | |
${GLFW_PATH}/lib/win32/Debug | |
${GLFW_PATH}/support/msvc100/Release | |
${GLFW_PATH}/support/msvc100/Debug | |
${GLFW_PATH}/support/msvc90/Release | |
${GLFW_PATH}/support/msvc90/Debug | |
${GLFW_PATH}/support/msvc80/Release | |
${GLFW_PATH}/support/msvc80/Debug | |
) | |
find_path(GLFW_INCLUDE_DIR GL/glfw.h PATHS ${GLFW_SEARCH_PATHS} ) | |
find_library(GLFW NAMES libglfw.a glfw PATHS ${GLFW_SEARCH_PATHS}) | |
if(GLFW_INCLUDE_DIR AND GLFW) | |
include_directories(${GLFW_INCLUDE_DIR}) | |
target_link_libraries(r3d ${GLFW}) | |
endif(GLFW_INCLUDE_DIR AND GLFW) | |
set( GLEW_SEARCH_PATHS | |
/usr/include | |
/usr/lib | |
/usr/local/include | |
/usr/local/lib | |
${GLEW_PATH} | |
${GLEW_PATH}/include | |
${GLEW_PATH}/lib | |
${GLEW_PATH}/lib/win32/Release | |
${GLEW_PATH}/lib/win32/Debug | |
${GLEW_PATH}/support/msvc100/Release | |
${GLEW_PATH}/support/msvc100/Debug | |
${GLEW_PATH}/support/msvc90/Release | |
${GLEW_PATH}/support/msvc90/Debug | |
${GLEW_PATH}/support/msvc80/Release | |
${GLEW_PATH}/support/msvc80/Debug | |
) | |
find_path(GLEW_INCLUDE_DIR GL/glew.h PATHS ${GLEW_SEARCH_PATHS}) | |
find_library(GLEW NAMES libGLEW.a GLEW PATHS ${GLEW_SEARCH_PATHS}) | |
include_directories(${GLEW_INCLUDE_DIR}) | |
target_link_libraries(r3d ${GLEW}) | |
endif(USE_GLFW) | |
if(USE_SFML) | |
find_package(SFML REQUIRED) | |
if(SFML_FOUND) | |
include_directories(${SFML_INCLUDE_DIR}) | |
link_directories(${SFML_LIBRARY}) | |
target_link_libraries(r3d ${SFML_LIBRARY}) | |
endif(SFML_FOUND) | |
endif(USE_SFML) | |
include_directories(. src tinyscheme-1.40) | |
# import CMakeLists.txt files in src and tinyscheme dirs | |
add_subdirectory(src) # a static lib is compiled here | |
add_subdirectory(tinyscheme-1.40) | |
configure_file(${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h) | |
include_directories(${PROJECT_BINARY_DIR}) | |
target_link_libraries(r3d tinyscheme r3dengine) | |
include_directories(${Boost_INCLUDE_DIRS}) | |
target_link_libraries(r3d ${Boost_LIBRARIES}) | |
target_link_libraries(r3d pthread) | |
add_subdirectory(test) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment