【发布时间】:2018-10-17 13:37:32
【问题描述】:
我有一个用 Visual Studio 编译的相当大的 x64 c++ 程序。我们有两种编译方式——一种是使用 sln 解决方案文件(来自 IDE 或通过 msbuild),另一种是通过 VS 命令提示符中的 Makefile(然后在内部使用 Visual Studio 的 cl.exe 和 link.exe)。
不知何故,我遇到了通过 Makefile 生成可执行文件并启用 /AVX 指令的情况,而我不想这样做,所以我想了解如何摆脱它。
我尝试在没有任何参数的情况下编译和链接它(尤其是没有 /arch:AVX)。我希望我在 sln 和 Makefile 中编译和链接相同的源代码和库。
找出 AVX 来源的简单方法是什么?项目包括几十个 h/cpp 文件,大约 40 个自己的库,10 个 Windows 库。你会怎么做?
【问题讨论】:
-
查看 .cpp 文件不会给您带来任何不同,因为那里的任何
#pragma都会同样影响 .sln 构建。检查你的makefile,这就是区别所在。 -
你不想要 AVX 的原因是什么?
-
grep Makefile(或其他与构建相关的文件)用于 avx(或“本机”ri,如果您在支持 AVX 的 CPU 上构建,则与您的编译器等效)?
-
@MSalters:我有一个 sln 文件和一个 Makefile,如何检查它们的差异?我检查了 CL 和 LINK 参数的差异,并尝试使用相同的参数,但没有得到相同的结果... bolov:使用 AVX 编译的 Prorgams 无法在具有不支持 AVX 的 CPU Dan M.: 在项目文件中的任何地方都没有 AVX 的迹象
-
将
/arch:SSE2添加到除MT 1之外的所有标志并检查结果
标签: windows visual-studio c++ makefile