Box2D Emscripten:什么是box2d.clean.h,以及如何成功生成它?

时间:2012-10-12 02:22:39

标签: javascript c++ compilation box2d emscripten

我可能错过了一些简单但我无法弄清楚的事情。

这是the makefile

box2d.clean.h:
    cpp -x c++ -DEM_NO_LIBCPP -IBox2D_v2.2.1 root.h > box2d.clean.h

我们来看看root.h

// Prevent some inclusions
#define NDEBUG

#ifdef EM_NO_LIBCPP
#define _FEATURES_H
#define _GLIBCXX_CMATH
#define _GLIBCXX_CXX_CONFIG_H
#define _CPP_TYPE_TRAITS_H
#define _EXT_TYPE_TRAITS
#define _GLIBCXX_NUMERIC_LIMITS
#define __GNUC_PREREQ(x, y) 0
#define _STL_RELOPS_H
#define _STL_PAIR_H
#define _FUNCTEXCEPT_H
#define _EXT_NUMERIC_TRAITS
#define _STL_ITERATOR_BASE_TYPES_H
#define _STL_ITERATOR_H
#endif

#include <Box2D/Box2D.h>

好。是的,我看到我们通过定义包含警卫来阻止包含多个标题。像<Features.h>这样的标题。

我的问题:

阻止包含这些标头的目的是什么?

应该{​​{1}}别名的命令是什么?在我的机器上,我看到了这个输出:

cpp

为什么cpp -x c++ -DEM_NO_LIBCPP -IBox2D_v2.2.1 root.h > box2d.clean.h i686-apple-darwin11-llvm-gcc-4.2: c: No such file or directory i686-apple-darwin11-llvm-gcc-4.2: c++: No such file or directory i686-apple-darwin11-llvm-gcc-4.2: warning: '-x -x' after last input file has no effect i686-apple-darwin11-llvm-gcc-4.2: no input files 会寻找gcc

1 个答案:

答案 0 :(得分:3)

通过删除cpp-x之间的空格,我能够使用c++命令解决问题。

cpp -xc++ -DEM_NO_LIBCPP -IBox2D_v2.2.1 root.h > box2d.clean.h