我有一个用C ++编写的现有项目,我想使用emscripten进行Web汇编编译。该代码调用boost库:
#include <boost/program_options.hpp>
#include <iostream>
#include <string>
#include <exception>
#include <algorithm>
#include <iterator>
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/exception.hpp>
#include <boost/filesystem/convenience.hpp>
#include <boost/thread/thread.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/assign.hpp>
我已经使用emscripten作为静态库编译了boost库的必要部分,并使用emar将它们从bc转换为a文件。现在,我正在尝试编译将预编译库提供给编译器的项目: (Makefile的一部分)
C_OPTIONS= -O3 -DNDEBUG -g \
/home/hiisi/workspace/boost_libs/program_options/build/emscripten-1.38.38/release/link-static/threading-multi/libs/cmdline.bc.a \
/home/hiisi/workspace/boost_libs/program_options/build/emscripten-1.38.38/release/link-static/threading-multi/libs/config_file.bc.a \
/home/hiisi/workspace/boost_libs/program_options/build/emscripten-1.38.38/release/link-static/threading-multi/libs/convert.bc.a \
/home/hiisi/workspace/boost_libs/program_options/build/emscripten-1.38.38/release/link-static/threading-multi/libs/libboost_program_options.bc.a \
但是make仍然抱怨代码中第一次出现boost的情况:
main.cpp:1:10: fatal error: 'boost/program_options.hpp' file not found
#include <boost/program_options.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
shared:ERROR: compiler frontend failed to generate LLVM bitcode, halting
这个问题听起来有点天真,但是我如何正确地做到这一点呢?该项目可以使用g ++完美编译,但不能使用em ++
答案 0 :(得分:1)
您必须添加包含目录才能使用boost。
那是一个看起来像这样的参数:
... -I/home/hiisi/workspace/boost_libs/include ...
答案 1 :(得分:0)
我要做的就是确保boost lib存在于emscripten include目录中。在我的情况下,emsdk/fastcomp/emscripten/system/include/
在那里与系统的boost库建立了符号链接,一切都像个魅力。