[工程构建] 简单的CMake模板

#指定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)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值