#指定cmake版本
cmake_minimum_required(VERSION 3.12)
#设置 内置变量
set(CMAKE_CXX_STANDARD 11)
#指定源文件搜索路径,并把这些路径用 all_cpp_file 变量代替
aux_source_directory(${CMAKE_SOURCE_DIR} all_cpp_file)
aux_source_directory(${CMAKE_SOURCE_DIR}/subdir_1 all_cpp_file)
aux_source_directory(${CMAKE_SOURCE_DIR}/subdir_2 all_cpp_file)
#打印一些 内置变量
message("")
message("1.PROJECT_BINARY_DIR = ${PROJECT_BINARY_DIR}")
message("2.PROJECT_SOURCE _DIR = ${_DIR}")
message("3.CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("4.CMAKE_CURRRENT_BINARY_DIR = ${CMAKE_CURRRENT_BINARY_DIR}")
message("5.CMAKE_CURRENT_LIST_FILE = ${CMAKE_CURRENT_LIST_FILE}")
message("6.CMAKE_CURRENT_LIST_LINE = ${CMAKE_CURRENT_LIST_LINE}")
message("7.CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
message("8.CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("9.EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
message("10.LIBRARY_OUTPUT_PATH = ${LIBRARY_OUTPUT_PATH}")
message("11.PROJECT_NAME = ${PROJECT_NAME}")
message("12.PROJECT_VERSION_MAJOR = ${PROJECT_VERSION_MAJOR}")
message("13.PROJECT_VERSION_MINOR = ${PROJECT_VERSION_MINOR}")
message("14.PROJECT_VERSION_PATCH = ${PROJECT_VERSION_PATCH}")
message("15.CMAKE_SYSTEM = ${CMAKE_SYSTEM}")
message("16.CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
message("17.CMAKE_SYSTEM_VERSION = ${CMAKE_SYSTEM_VERSION}")
message("18.BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}")
message("19.CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
message("20.CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
message("21.CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
message("")
message("22.all_cpp_file = ${all_cpp_file}")
message("23.all_lib = ${all_lib}")
message("")
#链接库搜索路径; 格式:link-path(library file path)
link_directories(
${CMAKE_SOURCE_DIR}/../lib
)
#项目名
project(projectname)
#工程输出(可执行文件/动态库/静态库),以及工程输出所依赖的所有源文件
add_library(projectname SHARED
${all_cpp_file}
)
#头文件搜索路径; 格式:include-path(head file path)
target_include_directories(projectname PUBLIC
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/base
${CMAKE_SOURCE_DIR}/../include
${CMAKE_SOURCE_DIR}/../include/glog
${CMAKE_SOURCE_DIR}/../include/ffmpeg
${CMAKE_SOURCE_DIR}/../include/cares
${CMAKE_SOURCE_DIR}/../include/eXosip2
${CMAKE_SOURCE_DIR}/../include/osip2
${CMAKE_SOURCE_DIR}/../include/osipparser2
)
#使用到的所有动态库
target_link_libraries(projectname
-lavcodec
-lavdevice
-lavfilter
-lavformat
-lavutil
-lcares #动态库使用soname形式
libeXosip2.a #静态库直接指定文件名
-lglog
-losip2
-losipparser2
-lswresample
-lswscale
)
#predefined macro
ADD_DEFINITIONS(-D LINUX)
[工程构建] 简单的CMake模板
原创
©著作权归作者所有:来自51CTO博客作者obentul的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
cmake交叉编译个人工程模板
cmake交叉编译个人工程模板文章目录cmake交叉编译个人工程模板初衷1、主目录模板12、主目录模板2(有支持子目录的功能)3、子目录模板初衷由于目前写的一
cmake linux android 主目录 -
CMake GUI工具使用 MinGW 64构建工程
CMake GUI工具使用 MinGW 64构建工程
minGW makefiles krita源码编译 CMake 生成器 字段 -
【经验分享】win10 cmake 构建 Tengine 工程
本教程详细记录了在 win10 环境中使用 cmake 快速构建 Tengine vs 工程的方法。
经验分享 深度学习 人工智能 windows 10 cmake -
cmake 切换构建类型
CMake可以配置构建类型,例如:Debug、Release等。配置时,可以为Debug或Release构建设置相。是 CMAKE_BUILD_TY用的配置变量。
c++ 开发语言 可执行文件 CMake 系统使用