网站开发常见技术问题,网站建设课程总结,上海外贸公司名录,张掖专业做网站的公司我对这块研究不深 我的需求是把cpp代码编译为wasm的形式时#xff0c;需要知道是debug/release 然而 尝试了一些办法 没有满足我的需求
尝试1#xff1a;
#include iostreambool isDebugMode() {
#ifdef EMSCRIPTENbool isDebug EM_ASM_INT({return (typeof conso…我对这块研究不深 我的需求是把cpp代码编译为wasm的形式时需要知道是debug/release 然而 尝试了一些办法 没有满足我的需求
尝试1
#include iostreambool 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// 非调试模式下的代码
#endifoh 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语句来实现请留言评论一下 谢谢