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

c++ 编译为WebAssembly时,怎么判断是release/debug环境?

我对这块研究不深
我的需求是把cpp代码编译为wasm的形式时,需要知道是debug/release
然而
尝试了一些办法 没有满足我的需求

尝试1:

#include <iostream>bool isDebugMode() {
#ifdef EMSCRIPTENbool isDebug = EM_ASM_INT({return (typeof console !== 'undefined' && console.debug) ? 1 : 0;});return isDebug;
#else
#ifdef NDEBUGreturn false;  // 发布版
#elsereturn true;  // 调试版
#endif
#endif
}int main() {if (isDebugMode()) {std::cout << "Debug mode" << std::endl;} else {std::cout << "Release mode" << std::endl;}return 0;
}

发现不准

尝试2:

#ifdef EMSCRIPTENbool isDebug = false;EM_ASM({if (typeof console !== 'undefined' && console.debug) {Module['isDebug'] = true;}});return isDebug;
#endif

发现还是不行

尝试3:

#ifdef __EMSCRIPTEN_DEBUG_SUPPORTED__// 调试模式下的代码
#else// 非调试模式下的代码
#endif

oh no 还是不行
尝试问了下 gpt 给我的回答

在 Emscripten 中,默认情况下,
调试模式和发布模式的编译输出是相同的,因此无法通过宏来准确判断当前是否处于调试模式。

所以我直接在编译的cmakelist.txt脚本中 添加如下

if (CMAKE_BUILD_TYPE STREQUAL "Debug")add_definitions(-DXXX_DEBUG)add_compile_options(-DXXX_DEBUG)
endif ()

在cpp中:

#ifdef XXX_DEBUG
//do something
#endif

源头解决问题,
如果你知道怎么准确的通过EMSCRIPTEN宏/js语句来实现,请留言评论一下 谢谢!

http://www.lryc.cn/news/322860.html

相关文章:

  • 信号处理--基于正则化聚合的共空间模态(CSP)脑电信号分类
  • 【2024年5月备考新增】《软考真题分章练习(含答案解析) - 11 项目风险管理(高项)》
  • 【3GPP】【核心网】【4G】4G手机接入过程,手机附着过程(超详细)
  • 【LeetCode-46.全排列】
  • 【Web】浅聊Jackson序列化getter的利用——POJONode
  • osgEarth学习笔记2-第一个Osg QT程序
  • 2024年发布jar到国外maven中央仓库最新教程
  • 在ubuntu22.04.4安装freeswitch1.10.10
  • qt 置顶窗口崩溃无法退出解决,停止运行快捷键设置
  • HBCalculator 程序:通过 VMD 可计算分子动力学模拟中氢键密度和强度的一维和二维分布
  • 鸿蒙-项目创建及了解
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(九)
  • idea2023 运行多 springboot 实例
  • HarmonyOS系统开发ArkTS常用组件编程技巧
  • 大数据开发(Hive面试真题-卷三)
  • Oracle数据库SQL开发规范
  • FreeRTOS 消息队列
  • 如何在Python中实现列表推导式?并给出一个例子
  • Flask中的Blueprints:模块化和组织大型Web应用【第142篇—Web应用】
  • 如何通过idea搭建一个SpringBoot的Web项目(最基础版)
  • Python和FastAPI语义分析和文本图像
  • centos系统ssh7.4升级9.6
  • excel所有知识点
  • 显卡基础知识及元器件原理分析
  • Spark Rebalance hint的倾斜的处理(OptimizeSkewInRebalancePartitions)
  • Vue 3中实现基于角色的权限认证实现思路
  • Visual Studio 2022进行文件差异比较
  • 1.2 编译型语言和解释型语言的区别
  • C语言-常量
  • 开源的OCR工具基本使用:PaddleOCR/Tesseract/CnOCR