Box2D Emscripten: что такое box2d.clean.h и как его успешно сгенерировать?

Я, вероятно, упускаю что-то простое, но я не могу понять это.

Это из 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>,

Мои вопросы:

Какой цели может препятствовать включение этих заголовков?

Какая команда должна 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 искать c?

1

Решение

Я смог решить проблему с cpp команда, удалив пространство между -x а также c++,

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

3

Другие решения

Других решений пока нет …