2015-07-03 2 views
3

Итак, у меня есть довольно простая программа на C++, которая использует CGAL и построена с помощью CMake. Я могу построить и запустить его успешно без emscripten:Использование emscripten с CMake в простом (?) Проекте

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "Unix Makefiles" . 
[output looks good] 
make 
[command works] 

Все есть хорошо, и я могу запустить вывод, однако, когда я пытаюсь использовать Emscripten вроде этого (который работал для меня в прошлом):

cmake -DCMAKE_TOOLCHAIN_FILE=/home/brenden/emsdk_portable/emscripten/master/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "Unix Makefiles" . 
[output looks good] 
make 
main.cpp:2:10: fatal error: 'CGAL/Triangulation_3.h' file not found 
#include <CGAL/Triangulation_3.h> 
     ^
1 error generated. 
ERROR root: compiler frontend failed to generate LLVM bitcode, halting 
make[2]: *** [CMakeFiles/cgal_test.dir/main.cpp.o] Error 1 
make[1]: *** [CMakeFiles/cgal_test.dir/all] Error 2 
make: *** [all] Error 2 

Это, очевидно, не работает.

Мой CMakeLists.txt выглядит следующим образом:

cmake_minimum_required(VERSION 2.8) 
project(cgal_test) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
set(SOURCE_FILES main.cpp) 
add_executable(cgal_test ${SOURCE_FILES}) 
target_link_libraries(cgal_test CGAL gmp) 

Любые идеи? Все библиотеки и заголовки CGAL находятся в usr/local /, поэтому я как бы не понимаю, что происходит.

+0

Хммм Я могу использовать g ++ main.cpp -o main -lgmp -lCGAL, но я не могу сделать em ++ main.cpp -o main -lgmp -lCGAL – Brenden

ответ

2

Хммм, так что получается, что вы не можете просто подключиться к библиотеке, в emscripten docs укажите, что вы «... создаете библиотеки для биткода, а затем компилируете библиотеку и основной программный биткод вместе с JavaScript».

Это звучит глупо и болезненно, но я думаю, что это ответ.

+1

Это имеет смысл. Ваша цель - встроенная среда с собственным «машинным кодом», поэтому вам нужно перекрестно скомпилировать любую библиотеку и использовать статическую ссылку, потому что она недоступна в браузере с помощью javascript. –

+1

Да, для справок в будущем (если кому-то это интересно) есть этот проект github, который пытается упаковать cgal в дружественный emscripten https://github.com/marcosscriven/cgaljs – Brenden

Смежные вопросы