#####################################################
# cmake ../ -G "Visual Studio 14 2015 Win64"
#
# VS 开启 OpenMP:
# 属性 | 配置属性 | C/C++ | 语言 | “OpenMP 支持” 选择 “是”
#
#####################################################
cmake_minimum_required(VERSION 2.8)
project(NvidiaDecode)
# ##生成调试信息
# IF(WIN32)
# # /Zi 用来生成程序数据库格式的调试信息 /DEBUG 用来在链接时支持调试
# ADD_DEFINITIONS( /Zi )
# #SET (LINK_FLAGS "${LINK_FLAGS} /DEBUG")
# SET (LINK_FLAGS "${LINK_FLAGS} /RELEASE")
# add_compile_options(-fno-elide-constructors )
# ENDIF(WIN32)
if(MSVC)
# Force to always compile with W4
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
endif()
# 抑制生成 ZERO_CHECK 工程
set(CMAKE_SUPPRESS_REGENERATION ON)
set( CMAKE_CXX_STANDARD 11)
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8 /wd4828 /wd4996 /wd4244")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/RELEASE )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/debug )
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
# Update if necessary
set( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -O2 " )
endif()
set(LOCAL ON)
if(LOCAL)
set(OpenCV_DIR D:/thirdparty20170624/OpenCV2411/build)
else(LOCAL)
set(OpenCV_DIR C:/opencv/opencv2/2.4.11/opencv/build)
endif()
# linked libs collections
set( CMAKE_INCLUDE_CURRENT_DIR ON)
## thirdparty
set(THIRDPARTY_ROOT "D:/thirdparty20170624/")
#set(THIRDPARTY_ROOT "${CMAKE_SOURCE_DIR}/3rdparty")
# OpenCV
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
### 1. phreads
set(phreads_ROOTDIR ${THIRDPARTY_ROOT}/pthreads)
include_directories(${phreads_ROOTDIR}/include)
link_directories(${phreads_ROOTDIR}/lib)
### 2. spdlog
set(spdlog_ROOTDIR ${THIRDPARTY_ROOT}/spdlog)
include_directories(${spdlog_ROOTDIR}/include)
include_directories(${spdlog_ROOTDIR}/src)
### 5.libxl
set(libxl_ROOTDIR ${THIRDPARTY_ROOT}/libxl-3.9.1.0)
include_directories(${libxl_ROOTDIR}/include_cpp)
link_directories(${libxl_ROOTDIR}/lib64)
### 6.json
set(json_ROOTDIR ${THIRDPARTY_ROOT}/json-develop)
include_directories(${json_ROOTDIR}/include)
### 10 FFmpeg
set(FFmpeg_ROOTDIR ${THIRDPARTY_ROOT}/ffmpeg-20191004-e6625ca-win64)
include_directories(${FFmpeg_ROOTDIR}/include)
link_directories(${FFmpeg_ROOTDIR}/lib)
### 11.OpenSSL
set(OpenSSL_ROOTDIR ${THIRDPARTY_ROOT}/OpenSSL-Win64)
include_directories(${OpenSSL_ROOTDIR}/include)
link_directories(${OpenSSL_ROOTDIR}/lib)
# user defined
include_directories(include)
file(GLOB_RECURSE NvidiaDecode_SrcFiles src/*.cpp)
file(GLOB_RECURSE NvidiaDecode_HeadFiles include/*.h)
SET(NvidiaDecode_ALL ${NvidiaDecode_HeadFiles} ${NvidiaDecode_SrcFiles}) # 拼接获得 src 和 include 所有文件
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${NvidiaDecode_ALL})
add_executable(${PROJECT_NAME} ${NvidiaDecode_ALL})
## Windows Socket LIb
if(MSVC)
add_definitions(-DWIN32_LEAN_AND_MEAN)
target_link_libraries(${PROJECT_NAME} ws2_32.lib)
target_link_libraries(${PROJECT_NAME} pthreadVC2.lib)
target_link_libraries(${PROJECT_NAME} libssl.lib libcrypto.lib)
endif()
target_link_libraries(${PROJECT_NAME}
avcodec
avformat
swscale
avutil
avfilter
avdevice
pthreadVC2
libxl
${OpenCV_LIBS})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
评论0