cmake簡單使用

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
)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章