Я пытаюсь скомпилировать Boost 1.47 для x86 Windows CE, используя Visual Studio 2008 и STLPort 5.2.1.Я могу успешно скомпилировать для x86 Windows и ARMV4I Windows Mobile 6.5.
Когда я запускаю bjam, я получаю эту ошибку почти во всех модулях:
stlport\ctype.h(42) : fatal error C1083: Cannot open include file: '../1/ctype.h': No such file or directory
Эта строка кода, на которую ссылается ошибка в ctype.h STLPort:
#include _STLP_NATIVE_C_HEADER(ctype.h)
Если я создаю новый проект Visual Studio и добавляю строки:
#define STR1(x) #x
#define STRINGIZE(x) STR1(x)
#pragma message (STRINGIZE(_STLP_NATIVE_C_HEADER(ctype.h)))
Я вижу: <../X86/ctype.h>
, как и следовало ожидать.
Почему boost заменяет «X86» на"1"?У него нет этой проблемы при компиляции для ARMV4I Windows Mobile или x86 Windows.
Редактировать
Дополнительные сведения.Что-то очень сознательно делает замену строки на "X86".
В stlport \ stl \ config_evc.h я добавил pragma message
s к этому коду:
# if !defined (_STLP_NATIVE_INCLUDE_PATH)
# if defined (_X86_)
# if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR)
# define _STLP_NATIVE_INCLUDE_PATH ../Emulator
# else
# define _STLP_NATIVE_INCLUDE_PATH ../X86
# pragma message (STRINGIZE(../abcdefg))
# pragma message (STRINGIZE(../X86))
# pragma message (STRINGIZE(_STLP_NATIVE_INCLUDE_PATH))
# endif
Вывод:
../abcdefg
../1
../1