diff --git a/cmake/backend/emscripten.cmake b/cmake/backend/emscripten.cmake index cf6986b..c13496a 100644 --- a/cmake/backend/emscripten.cmake +++ b/cmake/backend/emscripten.cmake @@ -130,6 +130,9 @@ function(nui_add_emscripten_target) set(PATCH_DOTENV_COMMAND COMMAND cmake -E true) endif() + get_target_property(TARGET_CXX_STANDARD ${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_TARGET} CXX_STANDARD) + message(STATUS "C++ standard of frontend subproject: ${TARGET_CXX_STANDARD}") + include(ExternalProject) ExternalProject_Add( "${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_TARGET}-emscripten" @@ -137,6 +140,7 @@ function(nui_add_emscripten_target) # emscripten cmake with passed down Release/Debug build type CONFIGURE_COMMAND ${EMCMAKE} cmake + "-DCMAKE_CXX_STANDARD=${TARGET_CXX_STANDARD}" ${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_CMAKE_OPTIONS} "-DNUI_NPM=${NUI_NPM}" "-DNUI_NODE=${NUI_NODE}" diff --git a/cmake/frontend/emscripten.cmake b/cmake/frontend/emscripten.cmake index c1cd356..f6b1393 100644 --- a/cmake/frontend/emscripten.cmake +++ b/cmake/frontend/emscripten.cmake @@ -2,7 +2,7 @@ function(nui_prepare_emscripten_target) cmake_parse_arguments( NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS "NO_INLINE;NO_INLINE_INJECT;LEAN_INDEX_HTML" - "TARGET;PREJS;STATIC;UNPACKED_MODE" + "TARGET;PREJS;STATIC;UNPACKED_MODE;CXX_STANDARD" "EMSCRIPTEN_LINK_OPTIONS;EMSCRIPTEN_COMPILE_OPTIONS;PARCEL_ARGS;NPM_INSTALL_ARGS;OBSERVED_BUNDLE_FILES" ${ARGN} ) @@ -28,9 +28,13 @@ function(nui_prepare_emscripten_target) set(NUI_LEAN_HTML "lean") endif() + if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD) + get_target_property(NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} CXX_STANDARD) + endif() + set(INLINER_COMMAND "") if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE) - nui_enable_inline(TARGET ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR}) + nui_enable_inline(TARGET ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR} CXX_STANDARD ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD}) if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE_INJECT) set(INLINER_COMMAND COMMAND ${NUI_INLINE_INJECTOR_TARGET_FILE} "${CMAKE_BINARY_DIR}/static/index.html" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.js" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.css" ${NUI_DEFER_INLINE_SCRIPTS_TAG} ${NUI_LEAN_HTML}) endif() diff --git a/nui/include/nui/frontend/utility/val_conversion.hpp b/nui/include/nui/frontend/utility/val_conversion.hpp index 8ddce54..3db5b50 100644 --- a/nui/include/nui/frontend/utility/val_conversion.hpp +++ b/nui/include/nui/frontend/utility/val_conversion.hpp @@ -57,9 +57,9 @@ namespace Nui template Nui::val convertToVal(std::map const& map); template - Nui::val convertToVal(std::unique_ptr const& map); + Nui::val convertToVal(std::unique_ptr const& ptr); template - Nui::val convertToVal(std::shared_ptr const& map); + Nui::val convertToVal(std::shared_ptr const& ptr); inline Nui::val convertToVal(long long) { throw std::runtime_error("Cannot convert long long to val");