UBuntu CMake工程配置基础 - sheismylife的专栏 - 博客频道 - CSDN.NET

UBuntu CMake工程配置基础


分类:
C++

2011-09-09 10:38
1024人阅读
评论(1)
收藏
举报

目录(?)[+]

  1. install CMake
  2. HelloWorld工程
  3. 外部构建
  4. 支持gdb调试

install CMake

我用CMake并不关注它的跨平台特性,因为我只专注于64位 Linux C++ server领域。
sudo apt-get install cmake

chenshu@chenshu-ubuntu:~$ cmake —version
cmake version 2.8.3

HelloWorld工程

mkdir -p examples/helloworld
cd examples/helloworld

创建main.cpp 文件,代码如下:

[cpp] view plaincopyprint?
  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("Hello World from Main!\n");
  5. return 0;
  6. }
#include <stdio.h>
int main()
{printf("Hello World from Main!\n");return 0;
}

创建CMakeLists.txt文件,配置如下:

[plain] view plaincopyprint?
  1. PROJECT (HELLOWorld)
  2. SET(SRC_LIST main.cpp)
  3. MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
  4. MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
  5. ADD_EXECUTABLE(hello ${SRC_LIST})
PROJECT (HELLOWorld)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

在同目录下,运行cmake .
chenshu@chenshu-ubuntu:~/Ubuntu One/c++/cmake/examples/helloworld$ cmake .
— The C compiler identification is GNU
— The CXX compiler identification is GNU
— Check for working C compiler: /usr/bin/gcc
— Check for working C compiler: /usr/bin/gcc — works
— Detecting C compiler ABI info
— Detecting C compiler ABI info - done
— Check for working CXX compiler: /usr/bin/c++
— Check for working CXX compiler: /usr/bin/c++ — works
— Detecting CXX compiler ABI info
— Detecting CXX compiler ABI info - done
— This is BINARY dir /home/chenshu/Ubuntu One/c++/cmake/examples/helloworld
— This is SOURCE dir /home/chenshu/Ubuntu One/c++/cmake/examples/helloworld
— Configuring done
— Generating done
— Build files have been written to: /home/chenshu/Ubuntu One/c++/cmake/examples/helloworld

Makefile以及其他一些文件被cmake生成了。执行make命令,hello二进制文件被编译出来。运行./hello,可以看到结果。
Hello World from Main!

make VERBOSE=1 可以看到详细的编译过程。
make clean 就可以清理工程

外部构建

HelloWorld采用内部构建,cmake产生的代码和自己的源代码文件在同一个目录,非常不好。因此需要采用cmake的外部构建方式。
创建helloworld2目录
这次创建一个src目录存放源代码,doc目录存放项目文档,
CMakeLists.txt需要出现在项目根目录和src目录中。
项目根目录下的内容如下:
project (HelloWorld2)
add_subdirectory(src bin)
src目录下内容如下:
add_executable(hello2 main.cpp)

创建一个build目录
cd build
cmake ..
make
build/bin下会找到hello2可执行文件。

支持gdb调试

在src/CMakeLists.txt文件中添加一行: set(CMAKE_BUILD_TYPE Debug)

UBuntu CMake工程配置基础相关推荐

  1. visualGDB下导入cmake工程

    新建工程 创建工程所在目录,给工程起名字 导入cmake工程 配置linux(Ubuntu为例)主机环境 选择源文件目录, 让源代码存在windows电脑下 导入工程完成---点击finish完成,编 ...

  2. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  3. Ubuntu下使用VS Code构建CMake工程

    1.下载Visual Studio Code 编译器 可以去Ubuntu自带的应用商店下载,或者使用你命令行下载 2.设置中文显示 直接下载的是英文版本,需要设置成中文显示 先去VS Code自带的商 ...

  4. 【Qt】QtCreator导入cmake工程

    QtCreator导入cmake 一.ubuntu系统 1.配置cmake编译套件 2.导入cmake工程 二.windows系统 1.下载cmake 2.安装cmake 3.设置环境变量 4.添加c ...

  5. Vivado工程配置petalinux实现linux下网卡驱动

    0.说明 基于Vivado工程配置petalinux实现linux下控制PL端GPIO 完成对linux网卡的驱动 实验内容: 完成一个vivado工程,导出硬件信息 创建petalinux工程,导入 ...

  6. 【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题

    [一生一芯]Chap.1 "一生一芯"实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题 0. 什么是PA? 1. 安装VMware ...

  7. Ubuntu 18.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装

    文章目录 一.换源 二.安装三方库 2.1 安装必要的依赖项 2.2 安装Pangolin 2.3 安装OpenCV3 2.4 安装Eigen3 三.安装ORB-SLAM2 四.安装ORB-SLAM3 ...

  8. cmake的一些基础知识

    本博文的大概框架:内里有重复,待有时间重新整理 1, cmake 的介绍,下载,安装和使用 2, cmake 的手册详解,我关注了 -C和-G 的使用 3, 在Linux中构建cmake 的工程 第一 ...

  9. Linux操作系统Ubuntu 22.04配置Visual Studio Code与C++代码开发环境的方法

      本文介绍在Linux Ubuntu操作系统下,配置Visual Studio Code软件与C++ 代码开发环境的方法.   在文章虚拟机VMware Workstation Pro中配置Linu ...

  10. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

最新文章

  1. 深入理解PHP内核(五)函数的内部结构
  2. MFC添加背景图片方法
  3. html制作主体部分,html – 使用CSS制作具有动态面板主体高度的面板填充父容器高度的其余部分...
  4. 18条交互设计和心理学之间的奇妙联系
  5. oracle json入参调用ws服务返回请求失败_Spring 5.2.2技术集成 —Spring HTTP调用程序和JAXWS...
  6. web性能测试分析-工具篇
  7. Python实现自动推本地github博客到远程仓库
  8. oracle 查询cpu 100%,Oracle 11g中查询CPU占有率高的SQL
  9. 如何在地图上显示图片和经纬度_IT技巧分享07:如何在地图上标注添加你的地址...
  10. 李雅普诺夫和MIT两个MRAC案例的xcos模型
  11. 【白皮书分享】工业互联网平台新模式新业态白皮书.pdf
  12. django学习笔记02
  13. 小米扫地机器人原地不动_小米扫地机器人的4个不可思议
  14. Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现
  15. 程序员常用不常见很难得的地址大全
  16. springboot添加ojdbc6报错
  17. Python使用pyserial实现串口收发
  18. 货币的未来取决于打破关于货币历史的虚构谎言
  19. mipi两线接口_什么是MIPI接口
  20. 机器人学与OROCOS-KDL(三)姿态描述与旋转矩阵

热门文章

  1. MATLAB图像生成函数Plot()总结
  2. llustrate dBpoweramp Asset UPnP Premium Mac 音频服务器
  3. macOS 升级12.0.1后,virtualBox 报错 Kernel driver not installed
  4. 使用 nginx 的 stream模块的TCP 转发实现内网SSH
  5. 用EasyRecovery恢复手残误删的文件
  6. 音乐艺考生如何提高视唱练耳技巧
  7. DataTable数据导出到Excel
  8. linux中查找文件并合并文件
  9. atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结...
  10. Apache Ant包进行ZIP文件压缩