BLOG / Webassembly (cs) / Úvod / Nastavení CLion pro WASM
Skusím Vám nyní posat postup při rozchození webassembly projektu v CLion. Co víc, chtěl bych, aby měl 3 konfigurace, debug, debug-wasm a release-wasm, přepínal mezi nimi selectboxem v panelu nástrojů CLion.
Jděte na File > Settings > Toolchains. Uvidíe asi něco takového:
Já mám jako defaultní C++ nastaven clang, protože CLang interně používá emscripten. Vyhnu se tak problémům s kompatibilitou jazyka. Nainstaluji ho jednoduše:
sudo apt-get update
sudo apt-get install clang
Pak ho ještě musím aktivovat
sudo update-alternatives --config c++
A vyberu...
Klikněte na "+" a vytvořte toolchain "Emscripten".
Nyní je třeba vědět, kam jste nainstalovali emscripten z prerekvizit. Já třeba do <emsdk> = ˜/dev/emsdk. Cestu zvolte absolutně. Nastavíte cc na <emsdk>/upstream/emscripten/emcc a c++ na <emsdk>/upstream/emscripten/em++. Asi takto:
Jděte na File > Settings > CMake. Uvidíe asi něco takového:
Vytvoříme nastavení pro překlad jako samostatný projekt. Všiměte si, že defaultní nastavení toolchainu jsme nepřemazali, ale vytvořili nové pro WebAssembly. Zvolíme tedy Toolchain Default, nějaké inteligentní jméno a Build Type na Debug. Ostatní řádky nemusíme plnit, až na jeden. V nastavení se inspirujte obrázkem výše. Co je ale důležité, je nastavení řádku CMake options. Vložíme tam konfiguraci, tím od sebe později různé konfigurace rozlišíme. Začnu s -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON, což nám usnadní ladění skriptů pro překlad projketu. není to povinné a klidně to po rozchození projektu můžete umazat... nebo to tam nedávat vůbec. Další větu co tam určitě musíte dát pro všechny debug konfigurace je -DDEBUG=yes. Překladač Vám totiž jinak makro DEBUG nenadefinuje a bude překládat release zdrojové kódy s nastavením překladače na debug. Nyní se dostávám na gró kofigurace ‐ její rozlišení jménem, pření zápisem -DTARGET_BUILD_VARIANT=debug_stand, kde debug_stand je jméno, které později využijeme.
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DDEBUG=yes
-DTARGET_BUILD_VARIANT=debug_stand
Release je jednodušší, nedáme tam -DDEBUG=yes.
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DTARGET_BUILD_VARIANT=release_stand
Nyní vytvoříme kofiguraci pro debug-wasm. Tlačítkem "+" Vytvoříte novou konfiguraci, pojmenujete ji a zvolíte nový Toolchain Emscripten. Řádeku CMake options musíme je třeba přidat konfiguraci EMSDK: -DCMAKE_TOOLCHAIN_FILE=<emsdk>/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake.
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DDEBUG=yes -DTARGET_BUILD_VARIANT=debug_wasm
-DCMAKE_TOOLCHAIN_FILE=
/home/zdenek/dev/emsdk/
upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
Nakonec nastavíte Environment na EMSCRIPTEN_ROOT=<emsdk>/upstream/emscripten.
EMSCRIPTEN_ROOT=/home/zdenek/emsdk/upstream/emscripten
Obdobně vytvoříme kofiguraci pro release-wasm. Tlačítkem "+" Vytvoříte novou konfiguraci, pojmenujete ji a vlastně jediné, čím se bude lišit od předchozí je Build Type nasteveno na Release. v řádku CMake options nezapomňte upravit jméno konfugurace na release-wasm.
Před dalším krokem předpokládejme, že máme pro každý targer různou konfiguraci (cmake soubor). Jednoduše ji načtu podle jména
uvedeného výše.
if (TARGET_BUILD_VARIANT MATCHES debug_wasm)
include(CMakeWasm.cmake)
elseif(TARGET_BUILD_VARIANT MATCHES release_wasm)
include(CMakeWasm.cmake)
elseif(TARGET_BUILD_VARIANT MATCHES debug_stand)
include(CMakeStand.cmake)
elseif(TARGET_BUILD_VARIANT MATCHES release_stand)
include(CMakeStand.cmake)
endif()
Tools > Cmake > Refresh překompilujete skripty. To už by mělo k výsledku stačit.
Realizuji Vaše sny
Zdeněk Skulínek