cmake_minimum_required(VERSION 2.8.12.1)
if (POLICY CMP0017)
# Shadow cmake provided modules
cmake_policy(SET CMP0017 OLD)
endif()
cmake_policy(SET CMP0022 NEW) #On OSX, cause problem that cmake use of lib/debug
project(TrainMonitor)linux
# Use folders in the resulting project files.
set_property(GLOBAL PROPERTY OS_FOLDERS ON)c++
option(KVHAVE_TOOL "Option: Tool compiled(default=ON)" ON)
option(KVHAVE_TEST "Option: Test compiled(default=ON)" ON)ide
set(VERSION_MAJOR "2")
set(VERSION_MINOR "5")
set(VERSION_PATCH "5")
set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})ui
if(MSVC)
set(KV_CLNAME "VS")
elseif(CMAKE_COMPILER_IS_GNUCC)
set(KV_CLNAME "gcc")
elseif(APPLE)#spceial
set(KV_CLNAME "Xcode")
endif()debug
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(EX_PLATFORM 64)
set(EX_PLATFORM_NAME "x64")
else()
set(EX_PLATFORM 32)
set(EX_PLATFORM_NAME "x86")
endif()
if(WIN32)
set(KV_PLATFORM_NAME "win32")
elseif(APPLE)
set(KV_PLATFORM_NAME "mac")
else()
set(KV_PLATFORM_NAME "linux")
endif()c++11
set(CMAKE_BUILD_TYPE "Release")code
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/include/c99
${CMAKE_SOURCE_DIR}/3rdsdk
${CMAKE_SOURCE_DIR}/3rdsdk/SDL2/include
${CMAKE_SOURCE_DIR}/3rdsdk/uncat/include
${CMAKE_SOURCE_DIR}/3rdsdk/ffmpeg/include
${CMAKE_SOURCE_DIR}/3rdsrc
)
link_directories(
${CMAKE_SOURCE_DIR}/3rdsdk
${CMAKE_SOURCE_DIR}/3rdsdk/SDL2/lib
${CMAKE_SOURCE_DIR}/3rdsdk/uncat/lib
${CMAKE_SOURCE_DIR}/3rdsdk/ffmpeg/lib
)string
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)it
set(KV_OUPUTNAME ${KV_PLATFORM_NAME}.${KV_CLNAME}.${EX_PLATFORM_NAME})
# for multi-config builds (e.g. msvc)
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
set(_tempVar ${CMAKE_SOURCE_DIR}/out/${KV_OUPUTNAME}-${OUTPUTCONFIG})
string( TOUPPER ${OUTPUTCONFIG} _cfgUpper )io
message(STATUS "${_tempVar}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${_cfgUpper} ${_tempVar}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${_cfgUpper} ${_tempVar}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${_cfgUpper} ${_tempVar}/lib)
#VS fix no effect
if(MSVC)
set(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${_tempVar}/pdb)
endif()
endforeach()
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
if(APPLE)
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
endif()
if(NOT MSVC)#some c++11 feature not work in vs2010 kiwen 2015/11/10
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
endif()
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Od -Ob0")
add_definitions(-D__UNICODE -D_UNICODE)
if(APPLE)
add_definitions(-DAPPLE)
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
include(cmake/MSVCPCH.cmake)
add_subdirectory(src) add_subdirectory(3rdsrc)