当前位置: 首页 > news >正文

江苏免费建站秒速网站建设

江苏免费建站,秒速网站建设,搜索引擎成功案例分析,烟台优化公司CMake 入门实践 第一章 概念与基础项目1.1 CMake 基础认知1.2 最小 CMake 项目1.3 构建流程验证 第二章 多文件项目管理2.1 项目结构2.2 源码示例2.3 CMake 配置 第三章 库文件管理实战3.1 项目结构3.2 核心配置3.3 接口设计 第四章 构建类型与编译优化4.1 构建类型配置4.2 构建…

CMake 入门实践

    • 第一章 概念与基础项目
      • 1.1 CMake 基础认知
      • 1.2 最小 CMake 项目
      • 1.3 构建流程验证
    • 第二章 多文件项目管理
      • 2.1 项目结构
      • 2.2 源码示例
      • 2.3 CMake 配置
    • 第三章 库文件管理实战
      • 3.1 项目结构
      • 3.2 核心配置
      • 3.3 接口设计
    • 第四章 构建类型与编译优化
      • 4.1 构建类型配置
      • 4.2 构建验证
      • 4.3 不同构建方式
    • 第五章 实用的高级技巧
      • 5.1 变量与缓存机制
      • 5.2 条件控制语句
      • 5.3 自动查找依赖
    • 第六章 跨平台构建实战
      • 6.1 平台检测与处理
      • 6.2 安装规则

第一章 概念与基础项目

1.1 CMake 基础认知

  • 跨平台构建系统生成器:通过抽象生成 Makefile、Visual Studio 项目等
  • 声明式构建系统:描述【要构建什么】,而非【如何构建】
  • 核心文件:通过 CMakeLists.txt 描述项目结构关系

1.2 最小 CMake 项目

// main.cpp
#include <iostream>int main() {std::cout << "Hello CMake! (v1.0)\n";return 0;
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)  # 最低版本保障
project(HelloCMake VERSION 1.0)       # 项目元数据add_executable(hello main.cpp)       # 核心构建指令

1.3 构建流程验证

mkdir build && cd build       # 创建构建目录
cmake ..                     # 生成构建系统文件
cmake --build .              # 执行编译命令
./hello                     # 运行可执行文件

在这里插入图片描述

第二章 多文件项目管理

2.1 项目结构

multi_project/
├── CMakeLists.txt
├── src/
│   ├── main.cpp
│   ├── math.cpp
│   └── math.h

2.2 源码示例

// math.h
#pragma once
int square(int x);
// math.cpp
#include "math.h"int square(int x) {return x * x;
}
// main.cpp
#include "math.h"
#include <iostream>int main() {std::cout << "5² = " << square(5) << std::endl;return 0;
}

2.3 CMake 配置

cmake_minimum_required(VERSION 3.10)
project(MultiFileDemo)# 设置C++标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 显式包含目录
include_directories(${PROJECT_SOURCE_DIR}/)# 收集源文件
file(GLOB SOURCES "src/*.cpp")# 创建可执行文件
add_executable(demo ${SOURCES})

在这里插入图片描述

第三章 库文件管理实战

3.1 项目结构

library_project/
├── CMakeLists.txt
├── include/
│   └── calculator.h
├── src/
│   ├── CMakeLists.txt
│   ├── main.cpp
└── lib/├── CMakeLists.txt└── calculator.cpp

3.2 核心配置

# 根目录 CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(LibraryDemo)add_subdirectory(lib)
add_subdirectory(src)
# lib/CMakeLists.txt
add_library(calc STATIC calculator.cpp)
target_include_directories(calc PUBLIC${CMAKE_SOURCE_DIR}/include)
# src/CMakeLists.txt
add_executable(app main.cpp)
target_link_libraries(app PRIVATE calc)

3.3 接口设计

// calculator.h
#pragma onceclass Calculator {
public:static double cube(double x);
};
// calculator.cpp
#include "calculator.h"double Calculator::cube(double x) {return x * x * x;
}

int main(void)
{return 0;
}

在这里插入图片描述

第四章 构建类型与编译优化

4.1 构建类型配置

if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE "Debug" CACHE STRING"Choose build type" FORCE)
endif()message("当前构建类型: ${CMAKE_BUILD_TYPE}")string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type)if(build_type STREQUAL "DEBUG")add_compile_options(-g -O0 -Wall -Wpedantic)
else()add_compile_options(-O3 -DNDEBUG)
endif()

4.2 构建验证

#include <iostream>
#include <cassert>int main() {
#ifdef NDEBUGstd::cout << "Release 模式\n";
#elsestd::cout << "Debug 模式\n";assert(1 + 1 == 3);  // 测试断言
#endifreturn 0;
}

4.3 不同构建方式

# Debug 模式(默认)
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
./demo  # 触发断言错误# Release 模式
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
./demo  # 关闭断言

第五章 实用的高级技巧

5.1 变量与缓存机制

# 定义普通变量
set(MY_VAR "value")# 缓存变量(用户可配置)
set(USE_FEATURE_X OFF CACHE BOOL "启用特性X")# 环境变量
message("当前PATH: $ENV{PATH}")

5.2 条件控制语句

if(MSVC)add_definitions(-D_WIN32)
elseif(UNIX)add_definitions(-D_LINUX)
endif()

5.3 自动查找依赖

find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)target_link_libraries(my_app PRIVATE ${OpenCV_LIBS})
endif()

第六章 跨平台构建实战

6.1 平台检测与处理

if(WIN32)# Windows特定设置add_definitions(-DWINDOWS_PLATFORM)
elseif(APPLE)# macOS特定设置add_definitions(-DMACOS)
else()# Linux设置add_definitions(-DLINUX)
endif()

6.2 安装规则

install(TARGETS demoRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION lib
)install(DIRECTORY include/ DESTINATION include)
http://www.dtcms.com/a/564286.html

相关文章:

  • 网站后台更新后前台没有同步更新网站后台怎么做的
  • 想开一个外企的网站怎么超做seo实训总结
  • 西安网站设计外包公司做网站就是做点击率
  • php怎么做网站班级网页设计模板html
  • 淘宝联盟如何建设个人网站百度上网站怎么做
  • 数据交换平台seo关键字优化教程
  • 换空间网站备案手机怎么制作网站
  • 线上商城推广软文苏州seo报价
  • 网站底部菜单江油网站建设制作策划哪家专业
  • 中国光大国际建设工程公司网站asp网站开发实训报告
  • 怎么样做国际网站生意开发一套软件app
  • 公司的网站建设公司网站建设为什么会有免费制作网站
  • 自己电脑做网站需要备案吗2安卓项目开发
  • 东莞网站建设效果建设网站入不入无形资产
  • 建设微信商城网站制作ps做图 游戏下载网站有哪些
  • 营销推广怎么做seo工作是什么意思
  • 自己搭建网站网站建设源代码交付
  • 网站设置301跳转封面上的网站怎么做
  • 在上面网站上可以做统计图织梦 网站栏目管理 很慢
  • 学校网站建设评审会议通知网站整体设计意图及其功能
  • 做网站哪个公司好企业微信下载官方网站
  • 网站制作的公司同源大厦 网站建设
  • 四川省建设网塔吊证查询网站wordpress多人会议插件
  • 清除网站黑链自己做的网站怎样赚钱吗
  • 文山知名网站建设联系电话初创业公司做网站
  • 江门网站推广做网站销售说辞
  • 个人博客网站下载网络营销有本科吗
  • 网站建设费用分析开发一套网站系统 多少钱
  • 小学网站建设报告软件外包公司为什么不好
  • 北京赛车pk10网站建设系统开发需求