CMakeLists.txt基本通用模板

基本通用模板

#指定cmake最低版本
cmake_minimum_required(VERSION 3.9)

#设置工程名字
project(modle)

# 输出测试
message("hello")
message(STATUS ${PROJECT_NAME})

#指定语言版本  这里指定C++11
set(CMAKE_CXX_STANDARD 11)


#设定源码列表.cpp 假如你只有一两个源码文件
set(SOURCE_FILE ./main.cc)
#设定所有源码列表 方式一
#  假如你有好多个源码文件放在在CAMKE_SOURCE_DIR这个目录下,其实这个目标就是工程目录,即CMakeLists.txt所在目录
#aux_source_directory(${CAMKE_SOURCE_DIR} DIR)  #将${CAMKE_SOURCE_DIR}目录下,也就是最顶级目录下所有的.cpp文件放入DIR变量中,后面add_executable就可很简化啦
#aux_source_directory(../src  DIR) 诶,我还有一些不小心放在其他地点的源码文件,我也要放在DIR变量中
#设定所有源码列表 方式二
FILE(GLOB DIR ${PROJECT_SOURCE_DIR}/*.cpp}) #匹配源码目录所有.cpp文件
FILE(GLOB_RECURSE DIR  ${PROJECT_SOURCE_DIR}/*.cpp) # 递归搜索匹配源码目录和其子目录下的.cpp文件
#add_executable(hello_world ${DIR})  设置源码列表后,获得可执行文件这一步就很方便了,不用巴拉巴拉写一长串源码文件; 这里只是说明下,不是这句真写在这个地方

#设定头文件路径
include_directories(../include/)
#inclde_directories("路径1"  “路径2”)


#设定链接库的路径(一般使用第三方非系统目录下的库)  比如opencv??
link_directories(../build/)
link_directories("路径1"  “路径2)

#添加子目录,作用相当于进去子目录里面,展开子目录的CMakeLists.txt
#同时执行,子目录中的CMakeLists.txt一般是编译成一个库,作为一个模块
#在父目录中可以直接引用子目录生成的库
#add_subdirectory(math)

#生成动静态库
#add_library(动静态链接库名称  SHARED/STATIC(可选,默认STATIC)    源码列表)
add_libarary(model STATIC ${DIR}) # 生成libmodel.a
add_libarary(model SHARED ${DIR}) #生成libmodel.so

#生成可执行文件
add_executable(modle ${SOURCE_FILES})
target_link_libaries(${PROJECT_NAME} pthred glog) #就是g++ 编译选项中-l后的内容,不要有多余空格

ADD_CUSTOM_COMMAND(#执行shell命令
TARGET  modle
POST_BUILD # 在目标文件model build之后,执行下面的拷贝命令,还可以选择PRE_BUILD命令将会在其他依赖项执行前执行  PRE_LINK命令将会在其他依赖项执行完后执行   POST_BUILD命令将会在目标构建完执行
COMMAND cp  ./model ../
)

常见宏(默认变量)

说明
PROJECT_NAMEproject()设置的工程名
PROJECT_SOURCE_DIR工程源码目录,例如~/Hello/ 应该就是CMakeLists.txt所在目录
PROJECT_BINARY_DIR生成文件目录,例如~/Hello/build

了解其他宏:歪猴:cmake常用变量

小结

其实整个CMakeLists.txt最基本的就是描述这样一个事件,诶,我要编译一份源代码,生成可执行文件。所以需要了解编译,才能看懂CMakeLists.txt。比如为什么设置链接库的路径?为什么要生成动静态库,我直接生成可执行文件不行吗?

参考:

CMakeLists.txt基本通用模板_cmakelist.txt 模板_Lailikes的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值