CMake教程系列-02-使用cmake代码生成二进制

这篇具有很好参考价值的文章主要介绍了CMake教程系列-02-使用cmake代码生成二进制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Cmake的安装

  • 参考:Cmake安装以及升级(Ubuntu)

2.Win10下使用CMake GUI

Win10安装文件:
CMake教程系列-02-使用cmake代码生成二进制
创建的目录以及代码如下:

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(sample CXX)
add_library(sample sample.cpp)
add_executable(sample_exe sample_exe.cpp)
  • sample.cpp
#include <iostream>

int print_hello_world()
{
    std::cout << "hello world!" << std::endl;

    return 0;
}
  • 目录结构如下:注意多创建一个build目录存放中间文件和最终二进制文件
    CMake教程系列-02-使用cmake代码生成二进制

点击“Configure

  • 我的的vs是2019,在Configure中选择了
    CMake教程系列-02-使用cmake代码生成二进制
    点击“Configure”右边的“Generate”。
    CMake教程系列-02-使用cmake代码生成二进制

点击“Generate”右边的“Open Projrct”。

  • 可以看到针对于Visual Studio的配置已经完全生成,此时只需要构建 ALL_BUILD 即可生成库 sample 和可执行文件 sample_exe
    CMake教程系列-02-使用cmake代码生成二进制
    CMake教程系列-02-使用cmake代码生成二进制

2.win使用命令行生成项目

  • 参考:cmake(1)

使用上面的代码文件,打开命令行,并输入以下命令:

E:\CmakeTest>cmake.exe -S E:\\CmakeTest -B E:\\CmakeTest\build -G "Visual Studio 16 2019" -A x64
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19044.
-- The CXX compiler identification is MSVC 19.29.30141.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/CmakeTest/build

执行以下命令生成库文件以及二进制程序:

E:\CmakeTest>cmake --build  E:\\CmakeTest\build
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.11.2+f32259642
版权所有(C) Microsoft Corporation。保留所有权利。

  Checking Build System
  sample_exe.cpp
  sample.vcxproj -> E:\CmakeTest\build\Debug\sample.lib
  sample_exe.cpp
  sample_exe.vcxproj -> E:\CmakeTest\build\Debug\sample_exe.exe
  Building Custom Rule E:/CmakeTest/CMakeLists.txt

3.几个重要的命令行参数

-S

  • 顶级CMakeLists.txt(包含project声明)所在路径。

-B

  • 存放临时编译的二进制文件(.obj、.ilk等)和编译器对应的配置文件路径。

-G

  • 编译器名称

-A

  • 架构名称

-D

  • 使用该变量以向cmake传入各种参数。包括选项及覆盖cmake提供的各种默认变量值。

--toolchain

  • cmake toolchain文件路径。

--install-prefix

  • 安装的二进制存放路径。

--trace / --trace-expand

  • 调试时使用,用于打印已执行的cmake代码及行号。否则仅输出函数message中的内容。

--build

  • 使用cmake直接调用编译器编译项目。

--config

  • 选择需要编译的项目配置类型。

--install

  • 安装已编译好的二进制文件至 CMAKE_INSTALL_PREFIX 中。

-DCMAKE_VERBOSE_MAKEFILE=ON文章来源地址https://www.toymoban.com/news/detail-443771.html

  • 看到编译和链接阶段的详细输出
    等价于
set( CMAKE_VERBOSE_MAKEFILE on )
  • 参考:CMake教程系列-02-使用cmake代码生成二进制

到了这里,关于CMake教程系列-02-使用cmake代码生成二进制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教程:Flutter 和 Rust混合编程,使用flutter_rust_bridge自动生成ffi代码

    实践环境:Arch Linux flutter_rust_bridge官方文档 Flutter环境配置教程 | Rust环境配置教程 记录使用 flutter_rust_bridge 遇到的一些坑。 假设我们已经配置了Fluuter与Rust环境 现在直接使用flutter_rust_bridge模板创建自己的项目 运行: 现在我们先让项目跑起来: 编辑 native/src/api.rs 安装代码生

    2024年02月09日
    浏览(73)
  • 快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码

    这段代码提供了一个使用 Python 和 Flask 结合 JWT (JSON Web Tokens) 进行用户认证的简单框架。它包括了生成 token、解码 token、检查用户状态和一个装饰器函数,用于保护需要认证的路由。下面是对代码的逐部分解释: 1. generate_token(user_id) 函数 这个函数用于为指定的用户 ID 生成一

    2024年02月22日
    浏览(41)
  • AndroidNDK开发——使用Cmake编译生成so文件

    最近做串口开发需要编译不同的so文件,于是查找了各种资料,学习了一下so编译. 直接跑项目或者使用gradle构建so生成的so文件如下:这里大家根据自己的需求配置生成so文件,本文只是举例没有全部生成. 如果不引入so文件初始化和调用时会报错,提示找不到so文件,一定要记

    2024年02月15日
    浏览(30)
  • CMake+QT使用教程

    下面是使用 Qt 用 C++ 编写的控制台应用程序的典型文件:CMakeLists.txt 项目目录结构 顶层CMakeLists.txt,包含整个项目的设置并调用add_subdirectory,顶层CMakeLists.txt设置的变量在子目录项目中可见 子目录项目CMakeLists.txt 项目目录结构 库项目文件(src/businesslogic/CMakeLists.txt) 最后,

    2024年02月15日
    浏览(39)
  • 图的最小生成树算法(图解+代码)| 学不会来看我系列

    在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-

    2023年04月12日
    浏览(65)
  • cmake使用教程(实操版)(四)

    使用上一节中构建的共享库。 1、准备工作 在cmake中创建t4用来存储这一节的资源。 2、编码 编写源文件main.c如下: t4下的CMakeLists.txt如下: t4下的src下的CMakeLists.txt如下: 3、外部构建 建立build文件夹,使用cmake …来构建。 会的到如下的错误: 没有那个文件或目录 4、引入头

    2023年04月09日
    浏览(22)
  • Visual Studio Code系列--CMake Tools使用说明

            在linux系统上开发程序,一般都是使用vim+gcc+gdb进行的;但是为了开发效率我们也会使用Visual Studio Code进行开发,毕竟有界面的开发调试还是更加友好一些。         老牌程序员肯定都知道make构建工具,但是其晦涩的语法还是难住不少初级开发者的。那么有没有一种

    2024年02月12日
    浏览(76)
  • CMake入门教程【实战篇】使用开源库cmake-modules简化项目开发与维护

    本教程介绍了rpavlik/cmake-modules,一个CMake模块集合,旨在简化和优化CMakeLists.txt文件的编写和维护工作。该集合尤其对虚拟现实和物理模拟包的开发者有用,同时也包含通用实用模块和针对旧版CMake的补丁或解决方案。 项目托管在GitHub上,可通过链接访问:rpavlik/cmake-modules 查

    2024年01月15日
    浏览(39)
  • unity NGO 代码教程:网络上动态生成物体

    生成一个网络对象有多种办法,但始终 只能由Server/Host生成/销毁 必须有network  object组件 要在NetworkManager中的NetworkPrefebList中注册 建议先看完第一章:unity netcode for gameobject(NGO)逻辑代码教程-CSDN博客  简单的Debug程序: 生成 销毁 注意Despawn会默认销毁对象 ,可以理解为在其后调

    2024年02月02日
    浏览(32)
  • springblade微服务代码生成的微服务管理的详细教程

    目前微服务作为分段式、高并发、负载均衡、服务注册、权限认证、聚合文档、熔断保护等机制合为一体的全新分布式服务,功能显而易见,在目前的开发市场中占据很大的优势,如何学习微服务,对程序员来说至关重要(学不会,可能饭碗不保!)springblade 是springcloude 的转

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包