[JavaScript, C++, WebAssembly] Как скрестить Clion, Emscripten и Cmake
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В этой статье я хотел бы пройтись и показать основные моменты того, как настроить IDE CLion для компиляции CMake проекта средствами Emscripten. Когда я занимался этим скрещиванием мне пришлось потратить день или два на эксперименты. И в этой заметке я собираюсь собрать некое "how to", которое в итоге сработало. Кто все эти люди?Emscripten - это набор инструментов для компилирования C++ кода в Asm.js/WebAssembly. Сейчас WebAssembly уже вышел на первый план,CMake - система для генерации скрипта для сборки проекта. CLion - среда разработки для проектов на C/C++ изначально построенная вокруг использования CMake как средства сборки. Но подкрепить к этому Emscripten было не так простоПредварительные требованияГлавным требованием, чтобы все завелось с полпинка очень важно уже иметь установленный Python желательно 3-й версии. Так же python должен быть доступен из командной строки\Cmake будет нужен минимально версии 3.13И конечно не забываем про GitНастраиваем EmscriptenСкачиваем emsdk. ( https://github.com/emscripten-core/emsdk )И из командной строки делаем следующие шаги:
- Скачиваем последнюю версию Emscripten
./emsdk install latest
- Активируем последнюю версию
./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.
Надеюсь на адекватную критику от сообщества
===========
Источник:
habr.com
===========
Похожие новости:
- [Конференции] Новая неделя YouTube-стримов: от Vue.js до SIMD-инструкций
- [JavaScript, Программирование, Разработка веб-сайтов] Основные команды bash, git, npm и yarn, а также немного о package.json и semver
- [Open source, Виртуализация, Visual Studio, C, Разработка под Windows] Вторая жизнь Virtual Floppy Drive
- [JavaScript] Кастомные методы для массивов в JS
- [JavaScript, ReactJS] Новый механизм JSX трансформации в React 17 Release Candidate
- [JavaScript, Программирование, ReactJS] Как использовать Axios в React
- [PHP, Глобальные системы позиционирования, JavaScript, Геоинформационные сервисы] Как высчитать ключи перехода от лобой системы координат к WGS с сантиметровой точностью?
- [JavaScript, HTML, Usability, Accessibility] Вы не знаете как должны работать модальные окна
- [C++, Разработка мобильных приложений, Разработка игр] Qt? ImGUI? wxWidgets? Пишем свое
- [JavaScript, WebGL, Работа с 3D-графикой] Продолжаем чистить память с three.js
Теги для поиска: #_javascript, #_c++, #_webassembly, #_emscripten, #_webassembly, #_javascript, #_c++, #_webassembly
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:17
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В этой статье я хотел бы пройтись и показать основные моменты того, как настроить IDE CLion для компиляции CMake проекта средствами Emscripten. Когда я занимался этим скрещиванием мне пришлось потратить день или два на эксперименты. И в этой заметке я собираюсь собрать некое "how to", которое в итоге сработало. Кто все эти люди?Emscripten - это набор инструментов для компилирования C++ кода в Asm.js/WebAssembly. Сейчас WebAssembly уже вышел на первый план,CMake - система для генерации скрипта для сборки проекта. CLion - среда разработки для проектов на C/C++ изначально построенная вокруг использования CMake как средства сборки. Но подкрепить к этому Emscripten было не так простоПредварительные требованияГлавным требованием, чтобы все завелось с полпинка очень важно уже иметь установленный Python желательно 3-й версии. Так же python должен быть доступен из командной строки\Cmake будет нужен минимально версии 3.13И конечно не забываем про GitНастраиваем EmscriptenСкачиваем emsdk. ( https://github.com/emscripten-core/emsdk )И из командной строки делаем следующие шаги:
Выбираем + и в появившемся меню выбираем 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. Но есть несколько полезных моментов, которые стоило бы упомянуть.
Надеюсь на адекватную критику от сообщества =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:17
Часовой пояс: UTC + 5