Cmake基础使用方法

本文详细介绍了CMake的基本用法,包括设置文件输出路径、创建可执行文件、添加静态和动态库、指定库文件路径、搜索文件、链接库以及处理不同平台的库文件命名规则。

Cmake

cmake_minimum_required(VERSION 3.0)
project(test)
set(EXECUTABLE_OUTPUT_PATH /home/kunsir/aa/bb/cc) # 设置文件输出路径
add_executable(app add.c div.c)

PROJECT_SOURCE_DIR CMakeList.txt所在位置

CMAKE_CURRENT_SOURCE_DIR CMakeList.txt所在位置

指定头文件所在目录
include_directories(${PROJECT_SOURCE_DIR}/include)
制作静态库
add_library(库名称 STATIC/SHARED 源文件1 源文件2 ...)
# STATIC 静态库
# SHARED 动态库

例:

add_library(calc SHARED $(SRC))
指定生成库文件路径
set(LIBRARY_OUTPUT /home/kunsir/abcdefg)
# 若路径不存在,自动创建
set(a a b) # 链接两个变量

Linux中,静态库名字分为三部分,lib+库名称+.a

​ 动态库 lib+库名称+.so

windows中,静态库名字 lib+库名称+.lib

windows中,动态库名字 lib+库名称+.dll

link_libraries()             链接静态库
target_link_libraries()      链接动态库
搜索文件
方式一:aux_source_directory
aux_source_directory(<dir>, variable)
dir 搜索的路径,variable 搜索得到的源文件存到这个变量中。然后
add_executable(${variable})
方式二:file
file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)

GLOB:将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。

GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。

例:

file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB NAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
链接静态库 link_libraries
link_libraries(<static lib> [<static lib>...])

参数一:指定要链接的静态库名字

可以是全名 libxxx.a也可以是掐头(lib)去尾(.a)之后的名字xxx

参数2-N:要链接的其它静态库的名字

如果该静态库不是系统提供的(自己制作或者使用第三方提供的静态库)可能出现静态库找不到的情况,此时要把静态库的路径指定出来:

link_directories(<lib path>)
CMAKE判断文件夹存不存在
set(folder_path "/path/to/folder")

if (EXISTS ${folder_path}) # 判断不存在,在EXISTS前边加NOT
    message("Folder exists: ${folder_path}")
else ()
    message("Folder does not exist: ${folder_path}")
endif ()
分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用
<think> 我们正在讨论CMake GUI的使用方法。用户要求获取详细解释。 根据引用资料,CMake GUI是CMake的图形界面工具,用于配置和生成项目的构建文件。以下将分步骤详细介绍其使用方法: ### 1. 启动CMake GUI - 在Windows系统中,可通过开始菜单或安装路径下的可执行文件启动。 - 在macOS/Linux系统中,通常在终端输入`cmake-gui`启动(需确保已安装GUI版本)[^2][^4]。 ### 2. 设置源代码目录与构建目录 - **Where is the source code**: 选择项目源代码根目录(含`CMakeLists.txt`的目录)。 - **Where to build the binaries**: 选择构建输出目录(建议新建空目录,如`build`)[^1][^3]。 ### 3. 配置项目(Configure) - 点击**Configure**按钮: - 弹出对话框选择**生成器**(Generator): - Windows: 可选Visual Studio版本(如"Visual Studio 17 2022")、MinGW等。 - Linux/macOS: 可选"Unix Makefiles"、Ninja等[^1][^4]。 - 点击**Finish**开始配置。 - 配置过程中: - GUI界面显示配置进度,并在底部输出日志。 - 配置完成后,界面中部显示**可配置变量**(如`CMAKE_INSTALL_PREFIX`、`BUILD_SHARED_LIBS`等),用户可按需修改[^2][^4]。 ### 4. 生成构建文件(Generate) - 点击**Generate**按钮: - 根据配置生成对应生成器的构建文件(如Visual Studio的`.sln`,Makefile的`Makefile`)。 - 成功后在输出目录生成完整构建系统[^1][^3]。 ### 5. 构建与编译 - **非GUI操作**:在构建目录中使用生成器对应的命令编译: ```bash # Makefile示例 cd /path/to/build make # 编译 make install # 安装(若配置了INSTALL目标) ``` ```bash # Visual Studio示例 打开build目录下的.sln文件 → 选择配置(Debug/Release)→ 生成解决方案。 ``` ### 示例:配置简单项目 假设项目结构如下: ``` my_project/ ├── CMakeLists.txt ├── main.cpp ``` 使用CMake GUI步骤: 1. **Source目录**:`C:/my_project` 2. **Build目录**:`C:/my_project/build`(新建) 3. 点击**Configure** → 选择"Visual Studio 17 2022" → Finish。 4. 修改`CMAKE_INSTALL_PREFIX`为`C:/my_project/install`(可选)。 5. 点击**Generate**生成解决方案。 6. 在`build`目录打开`my_project.sln`编译运行。 §§相关问题§§ 1. CMake GUI配置时出现"Could NOT find OpenSSL"错误如何解决? 2. 如何在CMake GUI中启用CCache加速编译? 3. CMake GUI中如何设置多配置(如Debug/Release)? </think> 以下是CMake GUI使用方法的详细解释,结合引用资料整理成清晰的操作步骤: ### 一、CMake GUI基础概念 1. **作用**:通过可视化界面配置CMake项目,替代命令行操作[^1][^4]。 **核心功能**: - 设置源代码路径和构建路径 - 选择生成器(如Visual Studio、Makefile等) - 配置项目变量(如安装路径、编译选项) - 生成构建系统文件(如.sln、Makefile) ### 二、使用步骤详解 #### 步骤1:启动与界面概览 - **启动方式**: - Windows:开始菜单搜索"CMake"打开GUI - Linux/macOS:终端执行 `cmake-gui`(需确保界面分为三个区域: ① **源代码目录**(Where is the source code) ② **构建目录**(Where to build the binaries) ③ **配置变量列表**(中间区域) ④ 底部日志窗口(显示操作结果)[^1][^3][^4]。 #### 步骤2:设置目录 1. **Source目录**:选择包含`CMakeLists.txt`的源码根目录 (示例:`D:/project/src`) 2. **Build目录**:指定构建输出路径(建议新建空目录) (示例:`D:/project/build`) *注:构建目录建议与源码分离,避免污染源码[^3]* #### 步骤3:配置项目(关键步骤) 1. 点击 **Configure** 按钮 2. **选择生成器**(弹出窗口): | 平台 | 常用生成器 | |------------|------------------------------| | Windows | Visual Studio 2022, MinGW | | Linux/macOS| Unix Makefiles, Ninja | 3. 点击 **Finish** 开始配置 4. **配置结果**: - 成功:变量列表显示可配置参数(如`CMAKE_INSTALL_PREFIX`) - 失败:底部日志显示红色错误(如缺失库需手动指定路径) #### 步骤4:修改变量(可选操作) - 在变量列表中修改值: - **修改示例**: | 变量名 | 说明 | 典型值 | |----------------------|-----------------------|------------------------| | `CMAKE_BUILD_TYPE` | 编译类型 | Debug/Release | | `CMAKE_INSTALL_PREFIX`| 安装路径 | `/usr/local`(Linux) | | `BUILD_SHARED_LIBS` | 是否编译动态库 | ON/OFF | #### 步骤5:生成构建文件 点击 **Generate** 按钮: - 生成对应生成器的构建系统文件: - Visual Studio → `.sln`解决方案 - Makefile → `Makefile` - 日志窗口显示 **Generating done** 表示成功[^1][^4] #### 步骤6:编译项目(非GUI操作) 在**构建目录**中使用原生工具链编译: ```bash # Makefile示例(Linux/macOS) cd /path/to/build make -j4 # 编译 make install # 安装到预设路径 ``` ```powershell # Visual Studio示例(Windows) 1. 打开build目录生成的.sln文件 2. 选择Debug/Release配置 → 生成解决方案 ``` ### 三、高级功能 #### 1. 多配置生成(如Debug/Release) - 重新点击 **Configure** - 修改变量 `CMAKE_BUILD_TYPE`: - **Debug**:包含调试符号 - **Release**:优化编译 - 再次点击 **Generate** 生成新配置[^2] #### 2. 指定第三方库路径 若出现 `Could NOT find OpenSSL` 等错误: 1. 点击 **Add Entry** 按钮 2. 添加变量(例如): - **Name**: `OPENSSL_ROOT_DIR` - **Type**: `PATH` - **Value**: `C:/OpenSSL-Win64` 3. 重新 **Configure** → **Generate**[^2] ### 四、完整操作流程图 ```mermaid graph TD A[启动CMake GUI] --> B[设置源码目录] B --> C[设置构建目录] C --> D{点击Configure} D --> E[选择生成器] E --> F[修改配置变量] F --> G{是否需调整?} G --是--> F G --否--> H[点击Generate] H --> I[在构建目录编译] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunsir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值