【问题标题】:compiling boost for wince为 wince 编译 boost
【发布时间】:2012-08-23 09:02:53
【问题描述】:

在为我的 wince 目标创建 Visual Studio 2008(版本 9.0)项目时,Visual Studio 知道我的平台是“FSS5PV210_CE6 (ARMV4I)”。该平台由供应商预定义并通过 sdk 安装,并让 Visual Studio 神奇地知道其包含目录。我在 vs 显示的命令行中看不到它。 那么问题来了:vs是如何将include目录注入编译器的呢?

为了提升,我在 user-config.jam 中添加了以下内容:

using msvc : 9.0~armstone : "cl.exe" :
<compileflags>-D_CRT_SECURE_NO_WARNINGS
<compileflags>-D_WIN32_WCE=0x600
<compileflags>-DUNDER_CE
<compileflags>-DBSP_FSS5PV210
<compileflags>-DWINCE
<compileflags>-DARM
<compileflags>-D_ARM_
<compileflags>-DARMV4I
<compileflags>-D_LITTLE_ENDIAN
<compileflags>-DUNICODE
<compileflags>-D_UNICODE
<compileflags>-DPOCKETPC2003_UI_MODEL
<compileflags>-DBOOST_NO_STD_LOCALE
<compileflags>-D_MSC_VER=1500
<linkflags>/subsystem:windowsce,6.00
<linkflags>/machine:arm
<linkflags>/NODEFAULTLIB:oldnames.lib
<linkflags>/STACK:262144,4096
<linkflags>coredll.lib
<linkflags>corelibc.lib
<linkflags>ole32.lib
<linkflags>oleaut32.lib
<linkflags>uuid.lib
<linkflags>commctrl.lib
<architecture>arm
<instruction-set>armv4
<interface>wince
<assembler>"armasm.exe"
;

然后我用 bjam.exe 工具集=msvc-9.0~armstone variant=debug link=static threading=multi runtime-link=shared --prefix= --layout=tagged install

我再次想知道 bjam 是如何知道我的平台及其包含目录的 "c:\Program Files (x86)\Windows CE 工具\wce600\FSS5PV210_CE6\Include\Armv4i"

-乔辰

【问题讨论】:

    标签: visual-studio-2008 boost windows-ce


    【解决方案1】:

    这适用于 checksdk.exe 命令:

    checksdk -list
    
    checksdk.exe -sdk "your sdk name" -script setenviroment.bat
    

    setenvironment.bat 中,它设置了一个名为INCLUDE 的环境变量。它还设置了PATHLIB。它设置PATH 以确保使用正确的交叉编译器cl.exe(例如x86_arm 以防你为arm 编译),它设置LIB 来帮助你链接,INCLUDE 当然是用于编译。

    【讨论】:

    • checksdk 位于何处?
    【解决方案2】:

    您必须从 bjam 调用设置环境变量的批处理文件。这是通过配置文件中的选项完成的。例如:

    using msvc : 9.0~armstone : "cl.exe" :
        <compileflags>-D_CRT_SECURE_NO_WARNINGS
        <compileflags>-D_WIN32_WCE=0x600
        <compileflags>-DUNDER_CE
        <compileflags>-DBSP_FSS5PV210
        <compileflags>-DWINCE
        <compileflags>-DARM
        <compileflags>-D_ARM_
        <compileflags>-DARMV4I
        <compileflags>-D_LITTLE_ENDIAN
        <compileflags>-DUNICODE
        <compileflags>-D_UNICODE
        <compileflags>-DPOCKETPC2003_UI_MODEL
        <compileflags>-DBOOST_NO_STD_LOCALE
        <compileflags>-D_MSC_VER=1500
        <linkflags>/subsystem:windowsce,6.00
        <linkflags>/machine:arm
        <linkflags>/NODEFAULTLIB:oldnames.lib
        <linkflags>/STACK:262144,4096
        <linkflags>coredll.lib
        <linkflags>corelibc.lib
        <linkflags>ole32.lib
        <linkflags>oleaut32.lib
        <linkflags>uuid.lib
        <linkflags>commctrl.lib
        <architecture>arm
        <instruction-set>armv4
        <interface>wince
        <assembler>"armasm.exe"
        <setup>armstoneconf.bat
    ;
    

    在我称为 armstoneconf.bat 的批处理文件中,您必须设置目标标头的 PATH、INCLUDE、LIB 和 LIBPATH。

    在 user-config.jam 中,您必须使用 ARM 编译器而不是 x86 编译器。我认为位于 %VCInstallDir%ce/bin/x86_arm/cl.exe 而不是桌面目标的“cl.exe”。

    您可以创建一个简单的 vc 解决方案并查看 Visual Studio 使用什么。

    另请参阅: http://stackoverflow.com/questions/15906901/build-boost-c-wince

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多