Visual studio 2008 为wince编译boost
当为我的wince目标创建visual studio 2008(9.0版)项目时,visual studio了解我的platorm,即“FSS5PV210_CE6(ARMV4I)”。该平台由供应商预定义,并通过sdk安装,使visual studio神奇地知道其包含目录。在vs显示的命令行中我看不到它。 所以问题是:vs如何将include dir注入编译器 对于boost,我在user-config.jam中添加了以下内容:Visual studio 2008 为wince编译boost,visual-studio-2008,boost,windows-ce,Visual Studio 2008,Boost,Windows Ce,当为我的wince目标创建visual studio 2008(9.0版)项目时,visual studio了解我的platorm,即“FSS5PV210_CE6(ARMV4I)”。该平台由供应商预定义,并通过sdk安装,使visual studio神奇地知道其包含目录。在vs显示的命令行中我看不到它。 所以问题是:vs如何将include dir注入编译器 对于boost,我在user-config.jam中添加了以下内容: using msvc : 9.0~armstone : "cl.ex
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"
;
使用msvc:9.0~阿姆斯通:“cl.exe”:
-D\u CRT\u安全\u无警告
-D_WIN32_WCE=0x600
-邓德鲁塞
-DBSP_FSS5PV210
-德温斯
-暗
-D_臂_
-DARMV4I
-D_LITTLE_ENDIAN
-杜尼科德
-D_UNICODE
-DPOCKETPC2003_用户界面_模型
-数据增压\u无\u标准\u区域设置
-D_MSC_VER=1500
/子系统:windowsce,6.00
/机器:手臂
/NODEFAULTLIB:oldnames.lib
/堆栈:2621444096
coredll.lib
corelibc.lib
ole32.lib
oleaut32.lib
uuid.lib
commctrl.lib
臂
armv4
畏缩
“armasm.exe”
;
然后我给bjam打电话
bjam.exe toolset=msvc-9.0~armstone variant=debug link=static threading=multi-runtime link=shared--prefix=--layout=taged install
我再一次想知道bjam是如何知道我的平台和它的include dir的
“c:\Program Files(x86)\Windows CE Tools\wce600\FSS5PV210\u CE6\Include\Armv4i”
-Jochen这与checksdk.exe commando一起工作:
checksdk -list
checksdk.exe -sdk "your sdk name" -script setenviroment.bat
在
setenvironment.bat
中,它设置一个名为INCLUDE
的环境变量。它还设置PATH
和LIB
。它设置PATH
以确保使用了正确的交叉编译器cl.exe
(例如,如果您是为arm编译,则使用x86_arm),它设置LIB
以帮助您链接,INCLUDE
当然是用于编译的。您必须从bjam调用设置环境变量的批处理文件。这是通过配置文件中的选项完成的。例如:
使用msvc:9.0~阿姆斯通:“cl.exe”:
-D\u CRT\u安全\u无警告
-D_WIN32_WCE=0x600
-邓德鲁塞
-DBSP_FSS5PV210
-德温斯
-暗
-D_臂_
-DARMV4I
-D_LITTLE_ENDIAN
-杜尼科德
-D_UNICODE
-DPOCKETPC2003_用户界面_模型
-数据增压\u无\u标准\u区域设置
-D_MSC_VER=1500
/子系统:windowsce,6.00
/机器:手臂
/NODEFAULTLIB:oldnames.lib
/堆栈:2621444096
coredll.lib
corelibc.lib
ole32.lib
oleaut32.lib
uuid.lib
commctrl.lib
臂
armv4
畏缩
“armasm.exe”
蝙蝠
;
在我称为armstoneconf.bat的批处理文件中,必须设置目标文件头的路径、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
checksdk位于哪里?
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
;