代码在git

正规一点来说,一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的elf文件会放到bin目录下,这样整个结构更加清晰。让我们把前面的文件再次重新组织下,

.
.
├── bin
├── include
│   ├── testFunc1.h
│   └── testFunc.h
└── src├── main.cpp├── testFunc1.cpp└── testFunc.cpp
cmake_minimum_required (VERSION 2.8)project (demo)add_subdirectory (src)
aux_source_directory (. SRC_LIST)include_directories (../include)add_executable (main ${SRC_LIST})set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

这里又出现一个新的命令set,是用于定义变量的,EXECUTABLE_OUT_PATH和PROJECT_SOURCE_DIR是CMake自带的预定义变量,其意义如下,

  • EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置
  • PROJECT_SOURCE_DIR:工程的根目录

所以,这里set的意思是把存放elf文件的位置设置为工程根目录下的bin目录。(cmake有很多预定义变量,详细的可以网上搜索一下)

添加好以上这2个CMakeLists.txt后,整体文件结构如下,

.
├── bin
├── CMakeLists.txt
├── include
│   ├── testFunc1.h
│   └── testFunc.h
└── src├── CMakeLists.txt├── main.cpp├── testFunc1.cpp└── testFunc.cpp
mkdir build
cd build
cmake  ..
make cd ..
cd ./bin
./main

代码

cmake_minimum_required (VERSION 2.8)project (demo)set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)aux_source_directory (src SRC_LIST)include_directories (include)add_executable (main ${SRC_LIST})

Linux下CMake简明教程(五)正规一点的组织结构相关推荐

  1. Linux下CMake简明教程(二)同一目录下多个源文件

    代码在git 接下来进入稍微复杂的例子:在同一个目录下有多个源文件.在之前的目录下添加2个文件,testFunc.c和testFunc.h.添加完后整体文件结构如下, (base) ledi@ledi ...

  2. Linux下CMake简明教程(一)简单入门

    代码链接 CMake是开源.跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件 ...

  3. Linux下CMake简明教程(七)对库进行链接

    代码在git 既然我们已经生成了库,那么就进行链接测试下.重新建一个工程目录,然后把上节生成的库拷贝过来,然后在在工程目录下新建src目录和bin目录,在src目录下添加一个main.c,整体结构如下 ...

  4. Linux下CMake简明教程(10) 定义宏来控制打印的信息

    代码在git 假设我们有个main.c,其内容如下 #include <stdio.h>int main(void) {#ifdef WWW1printf("hello worl ...

  5. Linux下CMake简明教程(九) 添加控制选项

    代码在git 有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种: 本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件 对于同一个b ...

  6. Linux下CMake简明教程(八) 添加编译选项

    代码在git 有时编译程序时想添加一些编译选项,如-Wall,-std=c++11等,就可以使用add_compile_options来进行操作. 这里以一个简单程序来做演示,main.cpp如下 # ...

  7. Linux下CMake简明教程(六)动态库和静态库的编译控制

    代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...

  8. Linux下CMake简明教程(四)不同目录下多个源文件

    代码在git 一般来说,当程序文件比较多时,我们会进行分类管理,把代码根据功能放在不同的目录下,这样方便查找.那么这种情况下如何编写CMakeLists.txt呢? 我们把之前的源文件整理一下(新建2 ...

  9. Linux下CMake简明教程(三)同一目录下多个源文件

    如果在同一目录下有多个源文件,那么只要在add_executable里把所有源文件都添加进去就可以了.但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake的优越性,cmake提供了一个命令可 ...

最新文章

  1. linux进制转换的函数,Linux shell 进制转换
  2. 关闭Outlook自动完成功能
  3. oracle执行代码权限,利用Oracle许可执行安全模式实现更好的控制
  4. 几何画板自定义工具_用好神奇的数学工具--几何画板,轻松作出复杂的几何图形...
  5. OpenCV3学习(12.3) kalman滤波器
  6. 100内奇数之和流程图_JavaScript基础教程(六)流程控制之循环语句
  7. typedef和define的用法和区别
  8. 更改Mysql5.7的默认编码为utf8解决database为latin1无法修改问题
  9. android 6.0 蓝牙进程,Android6.0-蓝牙权限问题
  10. LeetCode 4Sum 4个数之和
  11. Android 编程下 ListView 和 CheckBox 混合使用时的常见问题
  12. 30个有趣的Python实战项目(附源码)
  13. 数据库常用增删改查语句
  14. 中国首档程序员真人秀,20位选手找bug做模型,结果一开场主办方就惨遭攻击
  15. 医学CT图像三维重建代码
  16. boost asio生成lib
  17. 程序员在哪能接到私单?
  18. virt-install安装虚拟机
  19. 麒麟座V3.1接入OneNET平台初体验--上传温湿度
  20. ABP文档 - Web Api 控制器

热门文章

  1. 基于FPGA的FFT变换实现
  2. 3、以太网基础知识——ARP地址解析协议原理
  3. 授权公钥登录,sudo权限脚本
  4. Nginx反向代理WebSocket
  5. Winform开发框架里面使用事务操作的原理及介绍
  6. SQL Server 2012笔记分享-52:可用性指标
  7. mysql更新日志问题
  8. 使用OGR创建dxf格式矢量数据
  9. 光缆衰减标准(待补充)
  10. Ngrok: 使用 Ngrok 实现内网穿透