我有一个64位的Windows操作系统,我使用VS2008来编写我的程序。我注意到bin文件夹中有3个编译器:amd64,x86_amd64和bin目录中的一个(至少我认为是!)。我使用SCONS编译我的程序,当我在scons中使用--tree=all
时,我可以看到它使用amd64编译器。我有一个Intel i5处理器,我没有指定在SCONS中使用哪个编译器,那么为什么它使用amd64
?
根据我的理解,如果您使用的是x86_amd64
并且想要编译64位程序,那么amd64是否用于64位程序而不管CPU是什么?如果是那么案例那么bin目录中cl.exe
的目的是什么?,有人可以向我解释这个吗?。
另外,有没有办法看看VS2008正在使用哪个编译器?我找不到任何信息。在构建日志中。
答案 0 :(得分:1)
cl.exe控制编译器和链接器。 :)看到这里并学习:
http://msdn.microsoft.com/en-us/library/9s7c9wdw%28v=vs.80%29.aspx
我知道它与vs 2k5有关但仍然相关。
你说的其他一切都是正确的,尽管我能说出来。
我相信你可以在VS的属性中看到cl的命令行选项。从那里我相信如果你从实际的命令行运行该命令,你可以看到它发给编译器和链接器的后续命令,然后你可以看到它使用的编译器。
答案 1 :(得分:1)
如果需要更改SCons使用的C ++编译器,可以按照here修改CXX
构造变量。 (我假设您正在使用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插入和格式化路径。这可以通过python os.path.join()函数轻松实现,如下所示:
import os
thePath = os.path.join('c:', 'dir1', 'subdir')
在这种情况下,thePath应为“C:\ dir1 \ subdir”,如您所见,您不必担心向前或向后斜杠。