在简单(?)项目中将 emscripten 与 CMake 结合使用
Using emscripten with CMake in a simple(?) project
所以我有一个相当简单的 C++ 程序,它使用 CGAL 并使用 CMake 构建。我可以在没有 emscripten 的情况下成功构建并运行它:
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 库和 headers 都在 usr/local/ 中,所以我有点不知所措。
嗯,事实证明你不能只在库中 link,emscripten docs 指出你“...将库构建为 bitcode 然后编译库和主程序位码一起为JavaScript."
这听起来既愚蠢又痛苦,但我想这就是答案。
所以我有一个相当简单的 C++ 程序,它使用 CGAL 并使用 CMake 构建。我可以在没有 emscripten 的情况下成功构建并运行它:
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 库和 headers 都在 usr/local/ 中,所以我有点不知所措。
嗯,事实证明你不能只在库中 link,emscripten docs 指出你“...将库构建为 bitcode 然后编译库和主程序位码一起为JavaScript."
这听起来既愚蠢又痛苦,但我想这就是答案。