In diesem Artikel möchte ich die wichtigsten Punkte zum Konfigurieren der CLion-IDE zum Kompilieren eines CMake-Projekts mit Emscripten erläutern. Als ich diese Überfahrt machte, musste ich ein oder zwei Tage lang experimentieren. Und in diesem Beitrag werde ich ein "How to" zusammenstellen, das am Ende funktioniert hat.
Wer sind all diese Leute?
Emscripten ist eine Reihe von Tools zum Kompilieren von C ++ - Code in Asm.js / WebAssembly. Jetzt ist WebAssembly bereits in den Vordergrund getreten.
CMake ist ein System zum Generieren eines Skripts zum Erstellen eines Projekts.
CLion ist eine Entwicklungsumgebung für C / C ++ - Projekte, die ursprünglich auf der Verwendung von CMake als Build-Tool basiert. Das Sichern von Emscripten war jedoch nicht einfach
Voraussetzungen
Die Hauptvoraussetzung dafür, dass alles mit einem halben Kick beginnt, ist sehr wichtig, um Python bereits installiert zu haben, vorzugsweise Version 3. Außerdem muss Python über die Befehlszeile \ verfügbar sein
Cmake benötigt mindestens Version 3.13
Und natürlich Git nicht vergessen
Emscripten einrichten
Laden Sie emsdk herunter. (https://github.com/emscripten-core/emsdk)
Über die Befehlszeile führen wir die folgenden Schritte aus:
Herunterladen der neuesten Version von Emscripten
./emsdk install latest
Wir aktivieren die neueste Version
./emsdk activate latest
. help emsdk , . IDE.
CLion
, . File -> Settings. Build, Execution, Deployment -> Toolchains.
CLion Windows, MSYS2 ( MinGW ). gcc ++ header' .
Linux , Toolchain Windows:

+ MinGW.
Environment MSYS2. MSYS2 e:\msys64
CMake (, CLion CMake ).
! C Compiler C++ Compiler .bat . Linux .bat . , Emscripten python , shell python .
CMake. target :

Toolchains toolchain
: CMake Options -DCMAKE_TOOLCHAIN_FILE=
emsdk Emscripten.cmake.
Emscripten.cmake C Compiler C++ Compiler - .
CMake.
. Build->Build Project. , .
, , .js
set(CMAKE_EXECUTABLE_SUFFIX .js)
Emscripten . , emcc .js . , 1 ,
, linker', . :target_link_options(project PUBLIC "SHELL: --pre-js ${CMAKE_CURRENT_SOURCE_DIR}/prejs.js --js-library ${CMAKE_CURRENT_SOURCE_DIR}/jsLib.js") target_link_options(project PUBLIC "SHELL: -s USE_GLFW=3 --preload-file glsl -s ALLOW_MEMORY_GROWTH=1")
target_link_options
Cmake .--preload-file
, glsl , bundle'. ., . emscripten .js nodejs. .js nodejs :
target_link_options(glslangValidator PUBLIC -s NODERAWFS=1)
, CLion Emscripten.