CMakeLists.txt
# cmake version
cmake_minimum_required (VERSION 2.8)
# set variable
set(PROJECT_NAME test)
# set the project name
project(${PROJECT_NAME})
# include other cmake files
include(cmake/common_settings.cmake)
# include directories
include_directories(${INCLUDE_DIRECTORIES_LIST})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# recurse find files
file(GLOB_RECURSE HEADER_LIST ${PROJECT_SOURCE_DIR}/include/*.h)
# print header files information
foreach(file ${HEADER_LIST})
message(${file})
endforeach()
# add file filter
source_group(GROUP1 FILES ${HEADER_LIST})
# add difinitions
#add_definitions(-D _CRT_SECURE_NO_WARNINGS)
foreach(define ${DEFINATION_LIST})
add_definitions(${define})
endforeach()
file(GLOB_RECURSE SOURCE_LIST ${PROJECT_SOURCE_DIR}/src/*.cpp)
# add source files
#aux_source_directory(src SOURCE_LIST)
# set link directories, it can't relative path
link_directories(${PROJECT_SOURCE_DIR}/lib)
# set exe target store path
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR/bin})
# set library store path
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR/bin})
# set runtime directory
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR/bin})
# set target
add_executable(${PROJECT_NAME} ${SOURCE_LIST})
## set link directories
#target_link_libraries(${PROJECT_NAME} libheatmap vld IvsVideoPlayer libpointmapping)
target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARIES_LIST})
cmmon_settings.cmake
############################################################
# brief common setting
# date 2019/04/25
############################################################
# list include directories
set(INCLUDE_DIRECTORIES_LIST
utils
include
conf
)
# list all libraries that include
set(LINK_LIBRARIES_LIST
libheatmap
vld
IvsVideoPlayer
libpointmapping
)
# precompil defines
set(DEFINATION_LIST
-D _CRT_SECURE_NO_WARNINGS
-D WITH_NONAMESPACES
-D WIN32_LEAN_AND_MEAN
-D ELPP_THREAD_SAFE
-D ELPP_WINSOCK2
)
set(HEADER_FILE_LIST
src/*.h
include/*.h
include/*.cpp
)