首页
学习
活动
专区
圈层
工具
发布

CMake 秘籍(七)

我们使用 CMake 的标准命令cmake_parse_arguments来解析这些参数: function(add_doxygen_doc) set(options) set(oneValueArgs...这些生成器可以使用cmake -G来选择,例如: $ cmake -G "Visual Studio 15 2017" 并非所有生成器在每个平台上都可用,根据 CMake 运行的平台,通常只有一部分可用...在本章中,我们将专注于在 Windows 平台上进行开发。我们将演示如何直接使用 Visual Studio 15 2017 构建 CMake 项目,而不使用命令行。...在本节中,我们将在 Windows 上构建 Windows 二进制文件,我们的目标是配置和构建以下示例代码(hello-world.cpp): #include #include 在 Windows 计算机上,我们可以观察到以下输出: Hello from Windows 如您所见,该二进制文件在 Windows 上运行!

1.1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面向 C++ 的现代 CMake 教程(二)

    完成后,CMake 将为我们的选择构建工具生成一个构建系统并运行它。源文件将与彼此以及它们的依赖项编译和链接,以产生输出工件。...在一台机器上编译代码,然后在另一台机器上运行,这被称为交叉编译。你可以(使用正确的工具集)在 Windows 机器上运行 CMake 来为 Android 编译应用程序。...以下是add_custom_target()命令的完整签名: add_custom_target(Name [ALL] [command1 [args1...]]...在 Linux 上,最流行的格式是可执行和可链接格式(ELF)。Windows 使用 PE/COFF 格式规范。在 macOS 上,我们会找到 Mach 对象(Mach-O 格式)。...如果不建议在目标声明中使用变量,我们如何才能在例如处理特定平台的实现文件(如gui_linux.cpp和gui_windows.cpp)时条件性地添加源文件呢?

    1.9K10

    小白入门笔记:CMake编译过程详解

    不管是在IDE 中构建,还是直接从命令行构建,还照顾到构建后阶段。即使前面所有的环境都不同,持续集成/持续部署(CI/CD) 流水也可以轻松地使用相同的CMake 配置,并使用单一标准构建项目。...即,若使用ENV 变量作为指令的参数,这些值将在CMake生成构建系统期间(配置阶段+生成阶段)插入,并且会将其嵌入到构建树中,在构建系统完成后即使再通过脚本或者命令行修改环境变量ENV{<variable...2.3 实用指令 2.3.1 message() 指令 CMake中打印指令,也就是message() 指令是用于将文本打印到标准输出,并且CMake通过提供MODE 参数,可以自定义输出的样式,并且在出现错误的情况下...这个命令非常适合脚本,也可以在配置阶段的项目中使用。...回看第一个例子,这里并不再为可执行文件提供单个源文件,我们现在将引入一个类,用来包装要打印到屏幕上的消息。

    12.5K32

    【C++】基础:代码编译与构建工具介绍

    选择合适的 C++ 编译与构建工具取决于项目的具体需求。 以下是一些建议: 对于小型项目,可以使用简单的命令行工具进行编译和链接。 对于大型项目,建议使用构建工具自动化编译和链接过程。...cmake 在大型工程的编译时,一版使用cmake,对应的编译文件是CMakeList.txt。...CMake可以生成Makefile或Visual Studio项目文件等,使开发人员可以在不同的平台和编译器上使用相同的配置文件进行构建。...3.26.3-windows-x86_64.msi Linux安装cmake: # 安装 sudo apt-get install cmake # 验证版本 cmake --version 常用命令:...使用示例: cmake -DCMAKE_BUILD_TYPE=Debug 注释用#,大小写不分,用message来输出信息,用set()来定义变量,用math()来进行数学计算。

    1.2K10

    面向 C++ 的现代 CMake 教程(一)

    在 Windows 上,我们还需要一个构建工具来完成由 CMake 启动的构建过程。...为了检查你的系统上可用的生成器,请使用以下命令: cmake --help 在help打印输出结束时,你应该看到一个完整的列表,如下所示: Windows 10 上有许多生成器可供选择: The following...把它当作一种一致的跨平台工作方式:不用在 Linux 上使用 bash 脚本,在 Windows 上使用批处理或 PowerShell 脚本,你可以有一个版本。...在本章中,我们将涵盖以下主要主题: CMake 语言基础语法 使用变量 使用列表 理解 CMake 中的控制结构 有用命令 技术要求 你可以在 GitHub 上找到本章中存在的代码文件...在本节中,我们将简要介绍对脚本最有用的命令。 message()命令 我们已经知道并喜欢我们可靠的message()命令,它将文本打印到标准输出。然而,它的内涵远不止所见。

    2.4K01

    【CMake】使用 SDCC 构建 8051 工程并生成 HEX 文件

    整个构建过程高度自动化,便于在不同平台下统一使用命令行进行构建。 1. CMakeLists.txt 这个文件是 CMake 的核心配置脚本,用于定义整个项目的构建逻辑。...使用的是 SDCC 自带的 packihx 工具。 该脚本主要做了什么: 接收输入 .ihx 文件路径和输出 .hex 文件路径。 调用 SDCC 提供的 packihx 工具进行格式转换。...这个文件是通过以下几个步骤生成的: 构建命令(以 Ninja 为例) cmake -B build -G "Ninja" cmake --build build 实际构建输出示例: PS D:\B> cmake...通过 SDCC 附带的 packihx 工具将 .ihx 转换为标准的 .hex 文件。 .hex 文件即为可烧录到 MCU 的最终固件。...输出路径: build/MySDCCProject.hex 你可以使用如 STC-ISP 工具,将该 .hex 文件烧录到你的 STC8H 单片机中。

    62410

    cmake基本使用

    为什么要用cmake?makefile的语法非常复杂,光文档就有200多页,使用起来不方便,只支持linux平台,而cmake语法只有几页,用法通俗易懂,上手简单,代码量少,跨平台。...这也是大多数人使用cmake的原因 cmake默认使用CMakeLists.txt文件作为编写脚本的文件,下面编写了一个简单的CMakeLists.txt #1.cmake verson,指定cmake...2.方法 project (HELLO) #指定项目名称,生成的VC项目的名称; ---- 使用${HELLO_SOURCE_DIR}表示项目根目录 include_directories:指定头文件的搜索路径...helloDemo demo.cxx demo_b.cxx) #将cxx编译成可执行文件 add_definitions:添加编译参数 ---- add_definitions(-DDEBUG)将在gcc命令行添加...: message( status|fatal_error, “message”): 输出信息 find_library(MY_LIB libmylib.a ./) 在指定目录下搜索一个库, 保存在变量

    1.9K31

    Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    可以参考《Git安装教程(windows)》来安装git;参考《windows(64位)下使用curl安装》来安装curl;至于7z可以安装7-Zip。...都安装好以后,将download_dependencies.bat加载cmd里面运行,等待下载完成就可以了,注意在cmd里面检查批处理命令的输出结果。...编译完成后单独生成INSTALL工程,编译结果就会自动安装到CMAKE_INSTALL_PREFIX设置的文件夹。 3....注意配置以下几个选项: 1) CMAKE_INSTALL_PREFIX: cmake得到的工程都有install工程,生成之后就会自动把需要的头文件、lib还有dll复制到对应的目录中去,这样方便我们管理...测试环境 看了很多资料基本上都是在安装绝对环境,好处是配置好了本机哪里都可以通过文件名调用,不过坏处是一旦存在相同的dll环境或者换了电脑就麻烦了。

    3.4K30

    面向 C++ 的现代 CMake 教程(四)

    链接你使用的(Link what you use) 以下是 CMake 博客上对 link-what-you-use 的描述: 这是一个内置的 CMake 功能,使用 ld 和 ldd 的选项来输出如果可执行文件链接了比实际需要更多的库...在生成阶段完成后,我们将使用以下命令来构建自定义目标: cmake --build -t valgrind 添加此类目标并不困难: chapter09/03-valgrind/...在本章中,我们将涵盖以下主要主题: 无需安装导出 在系统上安装项目 创建可重用的包 定义组件 使用 CPack 打包 技术要求 您可以在 GitHub 上找到本章的代码文件...使用 CMake 进行安装不仅为所有 CMake 项目引入了一个方便的标准,而且还做了以下事情: 为根据它们的类型提供特定于平台的安装路径(遵循GNU 编码标准) 通过生成目标导出文件,增强安装过程...(COMMAND ldconfig)") endif() if()条件检查命令是否与操作系统匹配(在 Windows 或 macOS 上执行ldconfig是不正确的)。

    2K00

    CMake简易指南

    目标编译系统cmake 与Google GN类似,属于meta-build(源编译)系统,有自己的交互语法,使用时需要先将自身的语法翻译成其他编译系统,这个翻译过程称之为configure(配置),在执行配置命令时可以通过...--target install步骤二编译时也可以使用目标编译系统的编译命令触发编译,需要编写跨平台编译脚本时,使用cmake --build .可以适配任何环境配置配置阶段的参数主要为以下几种:-G...**CMakeLists.txt**生效,已不推荐使用,新版有类似面向对象的参数模式该使用方式不利于修改,实际使用中一般会选择 cmake 其他命令还辅助添加,以下为常用命令,注意最低cmake版本要求...通过可以使用 add_custom_command / add_custom_target 命令来添加自定义操作。...POST_BUILD:链接成目标文件之后生成器表达式在 cmake 中,除了常规的命令行,如if(xxx),还支持一种特殊语法 生成器表达式,生成器表达式与常规命令不同,常规命令在 配置 阶段生效,而生成器表达式在

    2.2K50

    CMAKE使用手记

    ---- 变量 在撰写 CMakeLists 时可以使用变量储存资料以及作为指令的参数。 CMake 中的变量具有以下特征: 1、变量严格区分大小写!...2、CMake 中的变量只有两种类型:字符串,和字符串数组。 3、变量无需声明即可赋值或者使用。未赋值的变量默认为一个空字符串。 4、与其他语言编程语言不同的是,CMake 脚本的语法中没有赋值操作。...无论是赋值,还是比较、判断操作,都是通过内置指令来完成的。 5、变量可以认为都是全局的,哪怕在一个宏中定义的变量,也可以在宏的外面被访问到。 如果字符串中不包含空格,那么可以不加引号,直接使用。...如果在命令中,使用包含了字符串数组的变量作为参数会是怎样的情况呢?...depend-target1 depend-target2 …) 这里的目标必须是 add_executable、add_library、add_custom_target 命令创建的目标 ----

    76320

    CMake编写总结

    CMake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C 的 projects/workspaces),然后再依一般的建构方式使用...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。...虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。...GLOB_RECURSE,因为他会遍历所有找到的文件夹以及他的子文件夹,容易造成把build目录扫描导致main函数重复定义的情况 完成后用CMake编译生成makefile,即可使用make命令进行项目的编译了...所以,为了不污染项目环境,推荐使用以下命令来生成Makefile mkdir build cd build cmake ..

    1.4K10

    C++ 大型工程基础 - CMake教程(初级)

    在 C++ 开发中,跨平台一直是个挑战——不同操作系统或硬件环境往往需要使用不同的本地构建工具,例如 Linux 常用的 Makefile、高效的 Ninja、Windows 上的 Visual Studio...使用同一套命令,即可在 Linux、Windows 和 Mac 上安装软件包。跨平台测试系统CMake 包含一个完整的跨平台测试系统。测试可以在项目的 CMake 源代码中指定,并在构建完成后运行。...然后使用 CTest 运行这些测试。测试结果可以发送到 CDash,并且可以并行运行。自定义命令除了构建标准库和可执行文件外,CMake 还允许在构建时运行任意命令。这使得代码生成工具能够跨平台集成。...若执行配置的CMake版本低于3.20(比如在旧服务器上用了3.19),CMake会直接报错并终止,避免后续因版本不兼容导致的隐藏错误(比如新版本CMake引入的命令旧版本不支持)。...命令执行完成后,cmake会在 build/debug目录生成完整的构建系统。

    42420

    CMake入门教程:让跨平台构建变得简单

    作为一个在跨平台开发中摸爬滚打多年的程序员,我不得不说:掌握CMake是提升工作效率的关键技能! CMake让我从繁琐的编译配置中解脱出来,把更多精力放在代码设计和功能实现上。...它不直接构建最终的软件,而是生成标准的构建文件(比如Windows上的Visual Studio项目文件,Linux上的Makefile),然后再由本地的构建工具完成最终编译。...这种"元构建系统"的设计非常巧妙:你只需要编写一套CMake脚本CMake负责生成各平台的本地构建配置本地构建工具负责最终的编译链接这样,无论你在Windows、Linux还是macOS上开发,项目的构建过程都能保持一致...这个过程相当简单:Windows:- 访问CMake官网下载安装包- 运行安装程序,并确保勾选"添加CMake到系统PATH"选项- 安装完成后,打开命令提示符输入cmake --version验证Linux...`macOS:```bash使用Homebrewbrew install cmake验证安装cmake --version```安装完成后,你应该能看到类似这样的输出:cmake version 3.23.1

    77610

    【详解】CentOS7源码安装cmake

    验证安装安装完成后,可以通过以下命令验证 CMake 是否安装成功:cmake --version如果安装成功,你应该会看到类似如下的输出:cmake version 3.22.1使用 CMake现在你已经成功安装了...在实际的应用场景中,有时候需要从源码安装软件以获得最新的功能或特定的配置。以下是如何在 CentOS 7 上从源码安装 CMake 的步骤和示例代码。前提条件确保你的系统已经安装了必要的开发工具。...在CentOS 7上从源码安装CMake涉及几个步骤,包括下载源码、配置编译环境、编译和安装。以下是详细的步骤:1. 准备工作首先,确保你的系统已经安装了必要的开发工具和库。...编译源码配置完成后,使用 ​​make​​ 命令编译源码。make6. 安装CMake编译完成后,使用 ​​make install​​ 命令将CMake安装到系统中。...验证安装安装完成后,可以通过以下命令验证CMake是否安装成功。

    1.3K10

    FLTK基于cmake编译以及使用(Windows、macOS以及Linux)

    ,cmake中"外部构建"方式) # 执行该命令前,请先阅读下面的cmake前置条件 cmake .. # Windows下建议使用PowerShell,上述的命令基本没有差别。...cmake配置前置条件 Windows 无 macOS 无 Linux 在Linux下,使用cmake进行项目生成前,务必确保一些基础库的安装: # 安装gcc/g++等核心开发构建工具和库(必备) sudo...在上面的cmake ..命令执行后,你也会看到控制台输出的一些关键内容: # cmake .....调用对应平台工具链完成FLTK编译 cmake进行项目构建完成后,在我们当前的build目录中,对于macOS/Linux类操作系统,CMake会为我们生成了对应的makefile文件,所以我们直接使用...# 在build目录下,默认就是release版 make 在Windows操作系统,请直接使用vs打开build中的解决方案FLTK.sln,打开后对项目ALL_BUILD进行Release模式编译。

    1.8K30
    领券