网站建设一般需要多少费用,协会网站建设哪里实惠,网站平台建设包括哪些,网站设计书模板1.CMake的作用和优势 跨平台支持#xff1a;CMake支持多种操作系统和编译器#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置#xff1a;通过CMakeLists.txt文件#xff0c;用户可以定义项目结构、依赖项、编译选项等#xff0c;无需手动编写复杂的构建脚本…1.CMake的作用和优势
跨平台支持CMake支持多种操作系统和编译器使用同一份构建配置可以在不同的环境中使用 简化配置通过CMakeLists.txt文件用户可以定义项目结构、依赖项、编译选项等无需手动编写复杂的构建脚本 自动化构建CMake能够自动检测系统上的库和工具减少手动配置的工作量 灵活性支持多种构建类型和配置如Debug、Release并允许用户自定义构建选项和模块 构建配置 CMakeLists.txt文件CMake的配置文件用于定义项目的构建规则、依赖关系、编译选项等。每个CMake项目通常包含一个或多个CMakeLists.txt文件 构建目录为了保持源代码的整洁CMake鼓励使用独立的构建目录Out-of-source构建。这样构建生成的文件与源代码分开存放。 基本工作流程 编写 CMakeLists.txt 文件 定义项目的构建规则和依赖关系。生成构建文件 使用 CMake 生成适合当前平台的构建系统文件例如 Makefile、Visual Studio 工程文件。执行构建 使用生成的构建系统文件来编译项目。 2.CMake基础 1.指定CMake的最低版本要求 cmake_minimum_required(VERSION version) cmake_minimum_required(VERSION 3.10) 2.定义项目的名称和使用的编程语言 project(project_name[language...]) project(MyProject CXX) 3.指定要生成的可执行文件和其他源文件 add_executable(target source_file...) add_executable(MyExecutable main.cpp other_file.cpp) 4.创建一个库静态库或者动态库及其源文件 add_library(target source_file...) add_library(MyLibrary STATIC library.cpp) 5.链接目标文件与其他库 target_link_libraries(target libraries...) target_link_libraries(MyExecutable MyLibrary) 6.添加头文件搜索路径 include_directories(dirs...) include_directories(${PROJECT_SOURCE_DIR}/include) 简单的CMakeLists.txt文件实例 cmake_minimum_required(VERSION 3.10)
project(MyProject CXX)# 添加源文件
add_executable(MyExecutable main.cpp)# 设置 C 标准
set(CMAKE_CXX_STANDARD 11) 查找库和包 CMake可以通过find_package()指令自动检测和配置外部库和包 常用于查找系统安装的库和第三方库 find_package()指令 基本用法 find_package(Boost REQUIRED) 指定版本 find_package(Boost 1.70 REQUIRED) 查找库并指定路径 find_package(OpenCV REQUIRED PATHS /path/to/opencv) 使用查找的库 target_link_libraries(MyExecutable Boost::Boost) 设置包含目录和链接目录 include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS}) 实例 cmake_minimum_required(VERSION 3.10)
project(MyProject CXX)# 查找 Boost 库
find_package(Boost REQUIRED)# 添加源文件
add_executable(MyExecutable main.cpp)# 链接 Boost 库
target_link_libraries(MyExecutable Boost::Boost) 3.CMake构建流程 CMake的构建流程分为以下几个主要步骤从设置项目到生成和执行构建命令 1.创建构建目录保持源代码目录整洁 2.使用CMake生成构建文件配置项目并生成适合平台的构建文件 3.编译和构建使用生成的构建文件执行编译和构建 4.清理构建文件删除中间文件和目标文件 5.重新配置和构建处理项目设置的更改 详细的构建流程说明 1.创建构建目录 CMake推荐使用“Out-of-source”构建模式即 将构建文件放在源代码目录之外的独立目录中。这样可以保持源代码的整洁并方便管理不同的构建配置。 创建构建目录在项目的根目录下创建一个新的构建目录。例如可以创建一个名为build的目录 mkdir build 进入构建目录进入刚刚创建的目录 cd build 2.使用CMake生成构建文件 在构建目录中运行CMake以生成适合当前平台的构建系统文件例如makefile、Ninja构建文件、Visual Studio工程文件等 运行CMake配置在构建目录中运行CMake命令指定源代码目录指包含CMakeLists.txt文件的目录。 cmake .. 3.构建和编译 使用生成的构建文件进行编译和构建。 不同的构建系统使用不同的命令。 使用 Makefile或类似构建系统如果使用 Makefile可以运行 make 命令来编译和构建项目。 如果要构建特定的目标可以指定目标名称。例如make MyExecutable 4.清理构建文件 构建过程中生成的中间文件和目标文件可以通过清理操作删除 使用makefile运行make clean命令来删除生成的文件 使用Ninja运行ninja clean命令来删除生成的文件 手动删除rm -rf ./build/* 5.重新配置和构建 如果修改了CMakeLists.txt文件或项目设置可能需要重新配置和构建项目 重新运行CMake配置在构建目录中重新运行CMake配置命令 cmake .. 重新编译使用构建命令重新编译项目 make 4.构建实例 假设项目结构如下 1.创建CMakeLists.txt文件 在 MyProject 目录下创建 CMakeLists.txt 文件。 CMakeLists.txt 文件用于配置 CMake 项目。 CMakeLists.txt 文件内容 cmake_minimum_required(VERSION 3.10) # 指定最低 CMake 版本project(MyProject VERSION 1.0) # 定义项目名称和版本# 设置 C 标准为 C11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 添加头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR}/include)# 添加源文件
add_library(MyLib src/mylib.cpp) # 创建一个库目标 MyLib
add_executable(MyExecutable src/main.cpp) # 创建一个可执行文件目标 MyExecutable# 链接库到可执行文件
target_link_libraries(MyExecutable MyLib) 说明 cmake_minimum_required(VERSION 3.10)指定 CMake 的最低版本为 3.10。 project(MyProject VERSION 1.0)定义项目名称为 MyProject版本为 1.0。 set(CMAKE_CXX_STANDARD 11)指定 C 标准为 C11。 include_directories(${PROJECT_SOURCE_DIR}/include)指定头文件目录。 add_library(MyLib src/mylib.cpp)创建一个名为 MyLib 的库源文件是 mylib.cpp。 add_executable(MyExecutable src/main.cpp)创建一个名为 MyExecutable 的可执行文件源文件是 main.cpp。 target_link_libraries(MyExecutable MyLib)将 MyLib 库链接到 MyExecutable 可执行文件。 2.创建构建目录 打开终端进入MyProject目录然后创建构建目录 mkdir build
cd build 3.配置项目 在构建目录中使用CMake配置项目 这将生成适合平台的构建系统文件 cmake .. cmake .... 指向源代码目录即包含 CMakeLists.txt 文件的目录。CMake 将读取 CMakeLists.txt 文件并生成构建系统文件。 4.编译项目 使用生成的构建系统文件编译项目。根据生成的构建系统文件类型使用相应的构建命令。 make 5.运行可执行文件 编译完成之后可以运行生成的可执行文件
./MyExecutable