CMakeLists之include_directories

最近在写CMakeLists的时候遇到了一些问题,在这里记录一下我解决的方案

下面是一个简单的demo

项目的结构如图左边所示。test.h在python文件夹下的include文件夹里面,test.cpp在python文件夹下面的src里面,CMakeLists如下所示

cmake_minimum_required(VERSION 3.4.1)
project(demo)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include
)add_library(demo src/try_1.cpp)

此时项目可以正常的编译,只需在build文件夹下面cmake …然后make,假如我们把test.h放在与python同级目录下的include文件夹下面,仍然使用当前cmake,则会有报错

如果希望能够找到头文件那么应该怎么办呢?

只需做下面的更改

cmake_minimum_required(VERSION 3.4.1)
project(demo)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include${CMAKE_CURRENT_SOURCE_DIR}/../include  #这行为增加的
)add_library(demo src/try_1.cpp)

这行的意思是搜索上一级目录下的include文件夹,如果我们希望搜索上一级的includes(假设有一个)文件夹,那么我们需要把include改为includes

CMakeLists之include_directories相关推荐

  1. CMake 入门与进阶

    目录 cmake 简介 cmake 和Makefile cmake 的下载 cmake 的使用方法 示例一:单个源文件 示例二:多个源文件 示例三:生成库文件 示例四:将源文件组织到不同的目录 示例五 ...

  2. 【笔记】CMake构建C++工程

    一句话结论:本文归纳CMake构建c++工程的基本用法,实现多依赖.多工程.多文件格式的工程编译构建. 1.简介 CMake(cross-platform make)是一个跨平台编译工具,它不能直接生 ...

  3. 国标28181:jrtplib从编译到使用

    jrtplib 作用 jrtplib是一个基于C++编写的面向对象的库,旨在帮助开发人员使用RFC3550中描述的实时传输协议(RTP),目前已经可以运行在Windows.Linux.FreeBSD. ...

  4. Android 下使用 FFmpeg 命令行工具与问题排查

    目录 FFmpeg 命令行工具 将相关文件加入到项目中 修改 ffmpeg 源码 问题排查 上一篇文章 中,我们已经成功编译了 FFmpeg 的主要库并集成到了我们的 Android 应用中.我们暂时 ...

  5. 第15章 Linux的Makefile与Cmake编程

    文章目录 文档配套视频讲解链接地址 第15章 Makefile与Cmake编程 15.1 Makefile 1. 什么是Makefile 2. Makefile 介绍 3. Makefile的规则 4 ...

  6. Android 随笔集 By tuliyuan

    目录结构 30. Android 进程保活 29.预置so到源码中遇到异常 28.模拟按键事件 27.模拟触摸事件 26.Android编译报错汇总 25. applicationContext弹出对 ...

  7. Java如何利用JNI调用C++(简略介绍及步骤)

    Java如何利用JNI调用C++(简略介绍及步骤) 文章目录 Java如何利用JNI调用C++(简略介绍及步骤) 一.原理介绍 二.详细步骤 步骤一:编写Java类 步骤二:生成.h文件 步骤三:CL ...

  8. 视觉SLAM十四讲作业练习(1)

    4 CMake 练习 书写一个由 cmake 组织的 C++ 工程,要求如下: include/hello.h 和 src/hello.c 构成了 libhello.so 库.hello.c 中提供一 ...

  9. ROS运行机C++程序,移动

    流程: 1.创建工作空间 mkdir catkin_ws cd catkin_ws mkdir src cd src catkin_init_workspace 2编译工作空间 cd ~/catkin ...

最新文章

  1. Failed to read auto-increment value from storageengine错误的处理方法
  2. Lock同步锁--线程同步
  3. centos7源代码安装mysql5.7_CentOS7源码编译安装MySQL5.7.11
  4. P3275-[SCOI2011]糖果【差分约束,负环】
  5. stl向量_用户定义大小的C ++ STL中的2D向量
  6. MySQL8.0.14 - 新特性 - InnoDB Parallel Read简述
  7. word没有显示endnote_Word2007或2010未显示EndNote工具条的解决方法 | 科研动力
  8. KVM地址翻译流程及EPT页表的建立过程
  9. 手机文字转语音简单方法分享
  10. 合法免费下载电子书的站点整理收藏
  11. matlab ext2int,PF_MATLAB_new 一个非常不错的粒子滤波工具箱,基于面向对象的思 实 实现非线性 ,包 238万源代码下载- www.pudn.com...
  12. java架构师_如何成为一个资深Java架构师?
  13. 肖仰华谈知识图谱:知识将比数据更重要,得知识者得天下
  14. 新年新玩法,数组“招婿”:老许,你要老婆不要?
  15. 24点游戏的递归解法和Python实现
  16. java调用QQ邮箱发送邮件
  17. JavaEye五月刊记录
  18. 【Linux入门】第三篇:软件包管理器yum和编辑器vim的使用
  19. 网站内容文章不收录什么原因?
  20. homebridge的移植---target端

热门文章

  1. unity+PHOTON+同步实例
  2. Go实现算法:N的阶乘
  3. linux 批量清空目录下的部分文件内容且文件不删除
  4. 8/16/32/64位单片机区别
  5. CentOS7.4中Postfix邮件服务器的搭建(三)-----配置squirrelmail收发邮件,配置磁盘配额
  6. 不知道新的行业资讯?要想技术不落伍程序员必看!
  7. Bootstrap5详细讲解
  8. chroot directory
  9. floyd 佛洛依德算法
  10. GIS开发中的区域定位功能实现