2012-06-15 57 views
0

我有一个64位的Windows操作系统,我用VS2008编写我的程序。我注意到bin文件夹中有3个编译器:amd64,x86_amd64和bin目录中的一个(至少我认为它是!)。我使用SCONS编译我的程序,当我在scons中使用--tree=all时,我可以看到它使用amd64编译器。我有一个英特尔i5处理器,我没有指定在SCONS中使用哪个编译器,那为什么使用amd64关于VS 2008编译器和SCONS

从我的理解,如果你是一个32位的机器上,并且要编译64位程序的x86_amd64使用,因此使用AMD64 64位程序,无论CPU的?,如果是这样的话,那么bin目录中cl.exe的用途是什么?有人可以向我解释这个吗?

此外,有什么办法可以看到VS2008使用哪个编译器?我找不到任何信息。在构建日志中。

回答

1

cl.exe控制编译器和链接器。 :)在这里看到和learneth:

http://msdn.microsoft.com/en-us/library/9s7c9wdw%28v=vs.80%29.aspx

我知道它的大概VS 2K5,但仍然具有现实意义。

你说的一切都是正确的,但从我所能告诉的。

我相信你可以在VS的属性中看到cl的命令行选项。从那里我相信如果你从实际的命令行运行该命令,你可以看到后续的命令发布到编译器和链接器,然后你就可以看到它使用了什么编译器。

1

如果您需要更改SCons使用的C++编译器,则可以修改CXX构造变量,如here所述。 (IM假设你使用C++)

这里是我如何做到这一点对我的一个项目为例:

env.Replace(CXX = '/app/gcc/4.3.4/bin/c++') 
env.Replace(CPP = '/app/gcc/4.3.4/bin/c++') 
env.Replace(CC = '/app/gcc/4.3.4/bin/gcc') 
env.Replace(LINK = '/app/gcc/4.3.4/bin/c++') 

通知这些都是Linux的路径,你就必须插入和格式化的路径因此适用于Windows。这可以很容易的和可移植与蟒蛇os.path.join()函数来完成,像这样:

import os 
thePath = os.path.join('c:', 'dir1', 'subdir') 

在这种情况下,thePath应该是“C:\ DIR1 \子目录”,所以你可以看到,你不必担心向前或向后的斜杠。