cmakelists.txt總的參考模板

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)  

相關文章
相關標籤/搜索