CMakeList的基本写法

最近需要自己写CMakaList,所以简要写一下一些基本的操作。为图实用,只写了常用的简单操作。

1.确定cmake最低版本需求
cmake_minimum_required(VERSION 3.0.0)
2.确定工程名
project(XXX)

这个不是必须,但是最好写一下,这一行会引入两个变量XXX_BINARY_DIR (二进制文件保存路径)和 XXX_SOURCE_DIR(源代码保存路径)

3.添加需要的库
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV")
find_package(OpenCV 3.2.0 REQUIRED)

find_package令CMake搜索所有名为Find.cmake的文件,3.2.0 REQUIRED给出需要的具体版本,以避免一台电脑安装了多个版本opencv而造成不必要的错误。通常情况下,通过设置CMAKE_PREFIX_PATH来设置CMake搜索路径,通常情况下不加也可以,但考虑到代码的可移植性,最好还是对搜索路径进行对应设置

4.添加需要的头文件
### 编和配置 CMakeLists.txt 文件 #### 了解基础概念 CMakeLists.txt 是一个用于描述构建系统的脚本文件,通过该文件可以指定源码位置、目标产物以及编译选项等内容。此文件对于跨平台项目的自动化构建至关重要[^1]。 #### 创建最小化的 CMakeLists.txt 为了启动一个新的 C++ 工程,最简单的 CMakeLists.txt 可能如下所示: ```cmake # 设置最低版本需求 cmake_minimum_required(VERSION 3.10) # 定义项目名称及其支持的语言 project(MyProject VERSION 1.0 LANGUAGES CXX) # 添加可执行文件, 并指明其依赖哪些源文件 add_executable(myapp main.cpp) ``` 上述代码片段展示了如何设置CMake所需的最低版本号,并声明了一个名为`MyProject`的新项目;最后还定义了一款应用程序 `myapp` ,它由单个源文件构成[^2]。 #### 使用变量简化管理 当涉及到多个子目录或复杂路径时,利用预处理器风格的变量能够有效减少重复劳动并增强灵活性: ```cmake set(SOURCES src/main.cpp src/utils.cpp) if(MSVC) # 如果使用的是微软Visual Studio Compiler,则开启特定优化标志 add_definitions(-DMSVC_SPECIFIC_OPTIMIZATION) endif() include_directories(include/) # 将头文件所在的位置加入到搜索路径当中去 link_libraries(${PROJECT_BINARY_DIR}/libexternal.a) # 链接外部库 add_executable(complex_app ${SOURCES}) target_link_libraries(complex_app PRIVATE libexternal) ``` 这里不仅设置了源文件列表作为变量来引用,而且针对不同编译器环境做了条件判断处理,同时也加入了第三方静态链接库的支持[^3]。 #### 构建多模块大型应用 随着规模的增长,通常会把各个功能组件拆分成独立的目标对象再组合起来形成最终产品: ```cmake add_subdirectory(src/core) # 加载核心逻辑部分 add_subdirectory(src/gui) # GUI界面实现层 ... install(TARGETS myapp DESTINATION bin) # 发布阶段将生成物复制至相应位置 ``` 这种做法有助于保持良好的层次化结构,便于维护的同时也方便团队协作开发[^4]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值