news 2026/3/6 18:55:19

使用cmake构建Cplusplus版运行时库-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用cmake构建Cplusplus版运行时库-–-behaviac

原文

请首先到/language/zh/downloads/下载或克隆源码。

缺省的,我们使用cmake来生成对应平台的项目文件(sln或make文件等)。

但cmake不是必须的,也可以选择自己喜欢的方式创建自己的项目文件。比如,使用premake等来生成项目文件,或者手工创建。

Windows平台

  • 下载并安装cmake,请使用3.3以上版本
  • cmake的路径需要添加到环境变量PATH
  • 运行build目录下的cmake_generate_projects.bat生成项目文件
  • 如果需要build android版本
    • 需要安装vs2015
    • 使用android_vs2015子目录下的项目文件
    • 或者使用cmake生成项目文件
      • 下载并安装cmake android, 直接覆盖上面步骤安装的cmake就好。
      • 运行build目录下的cmake_generate_projects_android.bat生成项目文件
      • 如果想使用mk,可以修改生成的linux下的make文件

其他平台

  • 下载并安装cmake,请使用3.3以上版本
  • 如果可能,请保证4.4.6以上版本的gcc
    • 使用版本为4.4.6的gcc可以顺利编译,但4.1.2的gcc有错误(未测试低于4.4.6的版本)
  • 运行build目录下的cmake_generate_projects.sh生成项目文件
    • mac上,运行build目录下的cmake_generate_projects_mac.sh生成项目文件

注意

  1. cmake_generate*.bat里使用的是vs2013和vs2015,用户可以根据自己的需要选择相应的编译器,比如vs2008、vs2010等,或者通过cmakegui进行选择。

  2. CMakeLists.txt里提供的是缺省设置,可以根据自己的需要直接修改或通过cmakegui来选择配置。特别的,CMakeLists.txt里有若干个选项可以配置。

  • BEHAVIAC_VERSION_MODE用来控制BEHAVIAC_RELEASE是否定义。BEHAVIAC_RELEASE的用途请参考文章《优化及性能》。

    • Default:缺省模式是Debug下BEHAVIAC_RELEASE没有定义,而Release下BEHAVIAC_RELEASE有定义
    • ForceUseDev:强制不定义BEHAVIAC_RELEASE
    • ForceUseRelease:强制定义BEHAVIAC_RELEASE
      • 在ForceUseRelease的时候,Release下,生成的项目文件会试图打开LTO开关,请参考文档《Cpp生成代码大小的说明》
  • CMAKE_BUILD_TYPE用来控制生成Debug还是Release(Visual Studio的时候不需要指定CMAKE_BUILD_TYPE)

  • BUILD_SHARED_LIBS用来控制libbehaviac是stati lib/a还是dynamid dll/so

  • BUILD_USE_64BITS用来控制是否生成64位 (使用Visual Studio时,需要指定带Win64的generator,请参考cmake的文档)

  • 根据上面的配置,CMake生成下面的_config.h文件,用来自动定义宏BEHAVIAC_RELEASE,如下图所示:

  • 在另一个文件config.h中,会根据_DEBUG或DEBUG宏来尝试重新定义宏BEHAVIAC_RELEASE,如果在_config.h中宏BEHAVIAC_RELEASE并没有定义,如下图所示:

  1. cmake不是必须的
    • 你可以选择自己喜欢的其他类似工具,比如premake等来生成项目文件。
    • 或者,你可以手工创建项目文件。
    • 又或者,可以直接把src和inc加到你已有的项目文件。
    • 当你自行修改或创建项目文件的时候,可能需要参考CMakeLists.txt查看需要的设置:
      • include_directories包含目录,你需要设置正确的包含目录
      • add_definitions编译宏,比如_DEBUG
      • add_target_definitions编译宏,比如BEHAVIACDLL_EXPORTS,BEHAVIAC_DLL
      • CMAKE_CXX_FLAGS编译开关
      • BUILD_SHARED_LIBS是否动态库还是静态库
  2. build\android_vs2015是提供的缺省的使用Visual Studio 2015来生成android项目的项目工程,支持64位。
  3. 可以使用cmakegui选择设置,或者在cmake的命令行里指定设置( -DCMAKE_BUILD_TYPE=Debug -DBUILD_USE_64BITS=ON等)。请参考build/cmake_generate_projects.bat或者cmake文档。

构建

  • 无论Windows平台还是其他平台,项目文件都生成到目录cmake_binary
  • 项目文件生成到目录cmake_binary,根据选用的编译工具(vs2013、make等)打开相应目录的项目文件或运行make等进行构建
  • .a、.lib、.dll、.exe等被生成到根目录的lib目录和bin目录
  • 生成的项目配置(mvsc, linxu, xcode)包含了Debug和Release,请根据需要构建Debug或Release版本
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/5 16:23:52

练题100天——DAY26:汇总区间+丢失的数字+数组交集

今天又又是三道题,难度范围:★★~★★★。难度完全是凭个人做的感觉标的,题还是得自己做了才知道。 100天也已经过1/4了,非常之不错啊,希望这些记录能让我对这些题的理解更深,当然,也希望能对你…

作者头像 李华
网站建设 2026/3/4 5:22:29

当AI芯片不再性感:博通的高增长,为何成了催命符?

出品I下海fallsea撰文I胡不知2025年12月12日16点03分,纳斯达克交易大厅的电子屏突然泛起红光。博通(AVGO.US)的股价在连续30分钟的抛售潮中直线下坠,从开盘402美元跌至357美元,单日跌幅最终定格在11.2%,市值…

作者头像 李华
网站建设 2026/3/2 19:54:13

Vibe Coding:AI驱动的编程新范式

Vibe Coding:AI驱动的编程新范式与MaynorAPIPro的完美结合 在2025年,人工智能技术迅猛发展,编程领域也迎来了一场革命。其中,“Vibe Coding”作为一种新兴的AI辅助软件开发技巧,正迅速流行开来。这种方法由AI专家Andr…

作者头像 李华
网站建设 2026/3/5 22:41:47

AI 数字孪生工厂:西门子与中信特钢的实践,如何降本 11%?

一、行业痛点:特钢制造的降本困局钢铁行业作为重工业支柱,长期面临 "三高两低" 的发展瓶颈:高能耗、高排放、高成本与低效率、低附加值。中信特钢作为全球特钢领军企业,其生产流程涵盖冶炼、连铸、轧制等十余个核心环节…

作者头像 李华
网站建设 2026/3/4 3:06:42

Spring IoC的实现机制是什么?

大家好,我是锋哥。今天分享关于【Spring IoC的实现机制是什么?】面试题。希望对大家有帮助; Spring IoC的实现机制是什么? 超硬核AI学习资料,现在永久免费了! Spring IoC(Inversion of Contro…

作者头像 李华
网站建设 2026/3/3 0:36:10

耐用折叠屏手机推荐:三星Galaxy Z TriFold如何破解“折痕与耐用”难题?

当折叠屏手机从概念产品走向大众市场,消费者最关心的问题之一就是耐用性。毕竟,折叠屏设备多出了复杂的机械结构和柔性屏幕,这些部件在日常使用中面临更多挑战。那么,如今的折叠屏手机在耐用性方面达到了什么水平?三星…

作者头像 李华