cmake构建一个学习项目

做了什么

  1. 构建一个学习项目(比如: <unix 高级编程> <unix 网络编程>,都能使用例中的方法,减少增加代码后的重新编译库文件)
  2. 遇见问题总结
  3. 区分系统,使用不同库

首先看下项目结构

cmake_project/
├── build
├── CMakeLists.txt
├── include
├── lib
└── src
    ├── CMakeLists.txt
    ├── lib
    │   ├── CMakeLists.txt
    │   ├── hello.c
    │   └── hello.h
    └── test
        ├── CMakeLists.txt
        └── main.c
  • 项目中的一级目录和文件有5个,4个目录、1个文件。build 最后用于编译的文件,cmake编译时会有副产物,不想副产物和代码混一起就老实加个build。include 是后面放头文件的位置。lib是后面放库文件的位置。src是源代码存放位置。CMakeLists.txt是cmake运行规则集,文件名不能错了要带s。下面看看根目录下的CMakeLists.txt(用到4个CMakeLists.txt)
PROJECT(cmake_project)        #项目名,不能有空格。我试了下,有空格时cmake会报找不到compliter
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)     #cmake最小版本

#这里设置安装目录前缀为当前项目根目录,系统默认是/usr/local。不想安装到系统中,只是一个学习测试用。
SET(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR})

#源文件子项目
ADD_SUBDIRECTORY(src)

第行用途也写得很明白,就不多说啥了。

  • src目录中2个目录,1个文件。lib 中是会使用到的库文件源码和头文件源码。test目录是一个简单测试用例。CMakeLists.txt是src子项目cmake运行规则集。看看
#添加共用库源文件
ADD_SUBDIRECTORY(lib)

#判断共用库头文件和库是否在根目录的lib,include中存在
if(EXISTS ${CMAKE_SOURCE_DIR}/include/hello.h AND EXISTS ${CMAKE_SOURCE_DIR}/lib/libhello.so)
        MESSAGE("hello.h 头文件和libhello.so 找到了")
        MESSAGE("开始添加hello库")
        #先把共用库头文件和库文件加入项目搜索路径
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值