UBuntu CMake工程配置基础

本文介绍了使用CMake在Ubuntu环境下进行C++工程配置的基础步骤,包括安装CMake、创建HelloWorld示例工程、配置CMakeLists.txt文件、外部构建支持及gdb调试设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


UBuntu CMake工程配置基础


分类:
C++


1024人阅读
评论(1)
收藏
举报

 

 

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 文件,代码如下:

  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文件,配置如下:

  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 构建和运行 C++ 项目 要在 Ubuntu 系统上使用 CMake 来构建并运行 C++ 项目,可以按照以下方法操作: #### 准备工作 确保已安装必要的开发工具链,包括 `CMake` 和支持的编译器(如 GCC 或 Clang)。可以通过以下命令检查是否已经安装这些工具: ```bash cmake --version g++ --version ``` 如果未安装,则通过包管理器进行安装: ```bash sudo apt update sudo apt install cmake g++ ``` #### 创建基本目录结构 创建一个新的项目文件夹,并初始化其内部结构。例如,假设项目的名称为 `MyProject`。 ```bash mkdir MyProject && cd MyProject mkdir src build touch src/main.cpp ``` 其中: - `src/`: 存放源代码。 - `build/`: 存放生成的二进制文件和其他中间产物。 #### 编写简单的 C++ 文件 编辑 `main.cpp` 并添加如下内容作为测试程序: ```cpp #include <iostream> int main() { std::cout << "Hello, CMake!" << std::endl; return 0; } ``` #### 配置 CMakeLists.txt 在根目录下创建名为 `CMakeLists.txt` 的文件,并编写基础配置脚本: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject LANGUAGES CXX) add_executable(myapp src/main.cpp) ``` 此脚本定义了一个最小版本需求、指定项目名以及声明可执行目标 `myapp` 使用的源码位置[^1]。 #### 执行构建过程 进入之前建立好的 `build/` 目录以隔离原始源码区域不受干扰: ```bash cd build/ ``` 调用 CMake 进行配置阶段处理: ```bash cmake .. ``` 一旦成功完成配置之后就可以启动实际编译流程了: ```bash make ``` 最后,在同一路径下应该能够找到刚产生的应用程序实体;可以直接运行验证成果: ```bash ./myapp ``` 这会显示消息 “Hello, CMake!” 表明一切正常运作中[^2]。 #### 整合到 VSCode 中 为了更方便地管理和调试整个工程体系,推荐利用 Visual Studio Code 结合插件进一步提升效率。具体步骤涉及设置 launch.json 及 tasks.json 参数等内容以便无缝衔接本地环境设定远程服务器端口映射等功能特性[^3]。 ```json // .vscode/tasks.json example snippet omitted here due to length constraints. // Similarly for launch configuration file too. ``` 以上即完成了基于 Linux 发行版之下的标准做法概述说明文档撰写完毕!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值