CMakeList.txt文件 工程实例解析

本文详细介绍了如何使用CMake进行项目配置,包括指定最小版本、设置编译模式、添加子目录、查找并集成OpenCV库等。通过具体代码示例展示了CMakeLists.txt文件的编写方式,以及如何构建可执行文件和链接库。

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

// 指定需要的最小的camke版本
cmake_minimum_required(VERSION 2.8)
project(demo) # project(demo)[]指定工程支持的语言,如果忽略表示支持所有的语言

//设置C++编译模式
//Release和Debug之间的区别:
// Release: -O3 -DNDEBUG
// Debug: -g
set(CMAKE_BUILD_TYPE Release)

// 设置C++编译参数(CMKE_CXX_FLAGS是全局变量)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -Wfatal-errors”)

//在当前目录下存在子目录时使用,子目录中需要含有CMakeLists.txt文件
add_subdirectory(KaTeX parse error: Expected '}', got 'EOF' at end of input: …e_directories({CMAKE_CURRENT_SOURCE_DIR}/…/code)

// 包的名称以及最低版本 没写就是对版本号不做限制
FIND_PACKAGE(OpenCV REQUIRED)
// 指定include路径src才能正确定位头文件
include_directories( O p e n C V I N C L U D E D I R S ) / / 指 定 链 接 器 查 找 库 路 径 l i n k d i r e c t o r i e s ( {OpenCV_INCLUDE_DIRS}) // 指定链接器查找库路径 link_directories( OpenCVINCLUDEDIRS)//linkdirectories({OpenCV_LIBRARIES_DIRS})

// 引入一个名为可执行目标,该目标会由调用该命令时在源文件列表中指的的源文件来构建,对应于逻辑目标的名字在工程范围内必须是全局唯一的
//可执行文件由哪些.o文件来生成
add_executable(CLASSIFER evalClassifNet.cpp eval.cpp dataReader.cpp)

链接库,把生成的classifer TrtNet库和OPenCV LIBS链接起来

target_link_libraries(classifer TrtNet ${OpenCV_LIBS})

// 要生成的可执行文件名 从工程目录下写起的主函数文件名
// 可执行文件生成,凡是要编译的源文件都要列出来
add_executable(runNet runNet.cpp)
// 天剑可执行文件所需的库(一般是刚刚生成的库)
target_link_libraries(runNet TrtNet ${OpenCV_LIBS})

//build runTwoNets
add_executable(runTwoNets runTwoNets.cpp)
target_link_libraries(runTwoNets TrtNet ${OpenCV_LIBS})

// install 指定可执行文件安装的路径
install(TARGETS classifer DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/install/)
install(TARGETS runNet DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/install/)
install(TARGETS runTwoNets DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/install/)

注: 注释符号本是# 但是为了格式好看换成 //

### 如何在 Windows 上通过 CMakeLists 文件编译 C 语言程序 要在 Windows 平台上使用 `CMakeLists.txt` 编译 C 程序,可以遵循以下方法完成配置和构建: #### 准备工作 确保已安装必要的开发工具: 1. **CMake**: 下载并安装最新版本的 CMake[^2]。可以通过命令行验证是否安装成功: ```cmd cmake --version ``` 2. **编译器**: 推荐使用 MinGW 或 MSVC (Microsoft Visual C++) 作为编译器。如果选择 MinGW,则需将其路径添加到系统的环境变量中。 #### 步骤详解 ##### 创建项目结构 假设项目的根目录为 `my_c_project`,其中包含以下文件: - 源代码文件(如 `main.c`) - `CMakeLists.txt` 示例 `CMakeLists.txt` 内容如下: ```cmake cmake_minimum_required(VERSION 3.10) project(MyCProject) set(CMAKE_C_STANDARD 99) add_executable(my_program main.c) ``` 此脚本定义了一个最小化的 CMake 版本要求、项目名称以及目标可执行文件名。 ##### 构建过程 进入项目根目录,在终端依次执行下列指令: 1. **创建构建目录** 为了避免污染源码树,建议新建一个专门用于存储中间产物的子目录,比如命名为 `build`。 ```cmd mkdir build cd build ``` 2. **运行 CMake 配置** 使用 CMake解析 `CMakeLists.txt` 并生成相应的构建系统文件。对于基于 GNU 工具链的情况,可以直接指定 MinGW 的位置;而对于 VS 用户,默认会尝试检测本地安装的 MSBuild 路径。 如果采用 MinGW 作为后台驱动引擎之一的话,那么需要显式声明所依赖的具体组件实例化方式为例所示[^4]: ```cmd cmake .. -G "MinGW Makefiles" ``` 3. **启动实际编译环节** 当前环境下推荐运用 make 命令触发具体动作序列从而达成最终目的即获得二进制成果物形式呈现出来: ```cmd mingw32-make ``` 完成后应该能够在当前的工作空间里发现新产生的应用程序实体文件等待进一步检验确认其功能正常与否. --- ### 注意事项 - 若遇到任何错误提示,请仔细检查每一步设置是否有遗漏之处,并参照官方文档获取更多帮助信息. - 对于复杂工程项目而言可能还需要额外引入第三方库支持等情况发生时记得调整相应参数选项满足特定需求场景下的定制化服务标准规范要求等等细节方面考虑周全才行哦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值