TL;DR
요즘 Emscripten으로 WASM 작업하고 있는데 동작하나 확인을 하기 위해서는 c++ 코드 작성하고, 자바스크립트 작성 하고, 브라우저 켜서 콘솔창 확인하기 너무 번거로운 것이다. 이왕하는 것 c++ 코드로만 테스트를 진행하고 싶다. 그래서 이것저것 찾아봐서 Google Test를 적용시켜 보았다.
전제 조건
- Emscripten SDK가 설치되어 있고 환경 변수가 구성되어 있어야 합니다.
함수 작성
테스트를 진행할 함수를 작성했다.
1 |
|
EMSCRIPTEN_BINDINGS을 사용하여, add
함수가 자바스크립트에서 사용할 수 있게 바인딩 했다. 해당 부분은 Embind를 확인하면 된다.
Test Suite 작성
1 |
|
Add
함수를 테스트하여 덧셈이 올바른지 확인한다. emscripten::val
을 사용하여 C++에서 JavaScript 객체를 호출하고 사용할 수 있다.
Embind로 바인딩한 add
함수를 호출해서 사용한다.
CMake 설정
1 |
|
핵심적인 부분은 FetchContent
를 통해 googletest를 설치하고, 사용할 수 있게 하고, emscripten를 위한 링크 플래그를 추가했다.
emrun
은 Emscripten으로 생성된 HTML 페이지를 로컬에서 실행하고 디버깅할 수 있게 해주는 도구이다. link_libraries("-lembind")
를 추가하여 emrun
활성화를 시킨다.emrun
에 대한 자세한 내용은 여기를 참고하면 된다.
실행
1 |
|
해당 명령어를 사용하면 된다. 옵션의 대한 간단한 설명은 다음과 같다.
--browser chrome
: 구글 크롬을 사용하여 실행--browser_args
: 크롬 실행 시 추가적으로 전달할 옵션을 지정.--kill_exit
: HTML 실행 후 emrun이 종료될 때까지 대기하지 않고 즉시 종료.
실행을 하면 테스트함수가 진행되는 것을 볼 수 있다!
Finish
ぼくがかんがえたさいきょうのWasm(Emscripten/C++)テスト環境 해당 블로그에서 작업한 것을 봤길래 나도 냉큼 따라 해봤다. 생각보다 어렵지 않아서 좋은걸! 특히 자바스크립트와 html을 따로 작성안해서 좋다. 나는 웹 개발이 주가 아니라서 어렵단 말이지..
더 다양한 것을 하려면 복잡하겠지만, 간단한 작업은 이와 같이 하면 된다. 전체 내용은 gist 올렸으니 확인하면 된다. add
함수 외에 다양한 예시도 있다.
레퍼런스
더 자세한 정보를 원하시면 다음 문서를 참고하면 된다.