cmake_minimum_required(VERSION 2.8) project(RopeSim) #------------------------------------------------------------------------------- # Build options #------------------------------------------------------------------------------- option(BUILD_LIBCGL "Build with libCGL" ON) #------------------------------------------------------------------------------- # Platform-specific settings #------------------------------------------------------------------------------- ################### # Building on OSX # ################### if(APPLE) # OSX Framework dependencies if(NOT BUILD_LIBCGL) include_directories( "/System/Library/Frameworks" ) find_library (COCOA_LIBRARIES Cocoa) find_library (IOKIT_LIBRARIES IOkit) find_library (COREVIDEO_LIBRARIES CoreVideo) endif() # Clang configuration if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CLANG_CXX_FLAGS "-std=c++11 -m64") if(BUILD_DEBUG) set(CMAKE_BUILD_TYPE Debug) set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -g") else(BUILD_DEBUG) set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -O3") set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -funroll-loops") set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -Wno-narrowing") set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -Wno-deprecated-register") endif(BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLANG_CXX_FLAGS}") endif() # GCC configuration if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(GCC_CXX_FLAGS "-std=gnu++11 -m64") if(BUILD_DEBUG) set(CMAKE_BUILD_TYPE Debug) set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -g") else(BUILD_DEBUG) set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -O3") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -fopenmp") endif(BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_CXX_FLAGS}") endif() endif(APPLE) ################## # Build on Linux # ################## set(LINUX UNIX AND NOT APPLE) if(LINUX) # GCC only if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(GCC_CXX_FLAGS "-std=gnu++11 -m64") # X11 Dependencies if(NOT BUILD_LIBCGL) set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXi") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXxf86vm") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXinerama") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXcursor") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXfixes") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXrandr") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXext") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXrender") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lX11") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lpthread") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lxcb") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXau") endif() # Debug configuration if(BUILD_DEBUG) set(CMAKE_BUILD_TYPE Debug) set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -g") else(BUILD_DEBUG) set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -O3") set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -fopenmp") endif(BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_CXX_FLAGS}") endif() endif(LINUX) #################### # Build on Windows # #################### if(WIN32) if(MSVC) set(MSVC_CXX_FLAGS "-std=gnu++11") if(BUILD_DEBUG) set(CMAKE_BUILD_TYPE Debug) else(BUILD_DEBUG) endif(BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSVC_CXX_FLAGS}") endif(MSVC) if(MINGW) set(MSVC_CXX_FLAGS "-std=gnu++11") if(BUILD_DEBUG) set(CMAKE_BUILD_TYPE Debug) else(BUILD_DEBUG) endif(BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSVC_CXX_FLAGS}") endif(MINGW) endif(WIN32) #------------------------------------------------------------------------------- # Find dependencies #------------------------------------------------------------------------------- # Required packages find_package(OpenGL REQUIRED) find_package(Threads REQUIRED) find_package(Freetype REQUIRED) # CGL if(BUILD_LIBCGL) add_subdirectory(CGL) include_directories(CGL/include) else(BUILD_LIBCGL) find_package(CGL REQUIRED) find_package(GLEW REQUIRED) find_package(GLFW REQUIRED) endif(BUILD_LIBCGL) #------------------------------------------------------------------------------- # Add subdirectories #------------------------------------------------------------------------------- add_subdirectory(src) # Install settings set(CMAKE_INSTALL_PREFIX "${RopeSim_SOURCE_DIR}/")