Wie man Clion, Emscripten und Cmake überquert

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:

  1. Herunterladen der neuesten Version von Emscripten

    ./emsdk install latest
  2. 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. , .

  1. , , .js

    set(CMAKE_EXECUTABLE_SUFFIX .js)
  2. 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'. .

  3. , . emscripten .js nodejs. .js nodejs :



    target_link_options(glslangValidator PUBLIC -s NODERAWFS=1)

, CLion Emscripten.








All Articles