检测是不是在 Visual Studio 项目的属性中启用了 Intel MKL
Posted
技术标签:
【中文标题】检测是不是在 Visual Studio 项目的属性中启用了 Intel MKL【英文标题】:Detecting if Intel MKL is enabled in Visual Studio project's properties检测是否在 Visual Studio 项目的属性中启用了 Intel MKL 【发布时间】:2018-07-23 15:02:19 【问题描述】:我正在开展一个项目,英特尔 MKL 很不错,但并非在所有目标平台上都可用,因此我必须检查它的存在以相应地运行。
如Compiling and Linking Intel® Math Kernel Library with Microsoft* Visual C++* 和Intel® Math Kernel Library (Intel® MKL) 2018 Getting Started 中所述,我已在我的Visual Studio 项目属性中启用Intel Performance Libraries
,但我没有得到Using Predefined Preprocessor Symbols for Intel® MKL Version-Dependent Compilation 中描述的任何预处理器定义,例如__INTEL_MKL__
未定义。
有什么想法可以让我拥有这些吗?或者任何其他检测英特尔 MKL 的方法?
【问题讨论】:
【参考方案1】:我找到了一种很好的折衷方案,但不是很优雅。
显然我们可以在构建事件中检查属性页设置的值。在发现一个名为 UseIntelMKL
的宏后,我决定将 config.h
与它的值相应地绑定,并改用在此 config.h
中定义的预处理器指令。
这里大致是充当Pre-build Event
的脚本。我基本上是在config-mkl.h
中定义__INTEL_MKL__
。
if "$(UseIntelMKL)"=="Parallel" (
xcopy /Y /I $(ProjectDir)config-mkl.h $(ProjectDir)config.h
) else (
xcopy /Y /I $(ProjectDir)config-nomkl.h $(ProjectDir)config.h
)
【讨论】:
这不是一个解决方案,而是一个 hack,我的朋友。 :) 我发布了一个解决方案。 请阅读我的问题和我的 cmets,它是关于detecting if Intel MKL is enabled in Visual Studio project's properties
。项目仅适用于 Windows,您建议使用另一个构建系统。我在这里所做的只是,好吧,detecting if Intel MKL is enabled in Visual Studio project's properties
。
CMake 不是另一个构建系统。它是一个构建系统生成器。例如,它有助于在 Windows 上进行命令行构建和 VS 解决方案等。但它允许您在机器上保留多个版本的 MKL。并且还允许您使用 intel 编译器进行构建,....但是,嘿,它对您有用,所以。别往心里放。祝你一切顺利。以上是关于检测是不是在 Visual Studio 项目的属性中启用了 Intel MKL的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 (C++):在第一次构建错误时停止编译(不是第一个项目)
Visual Studio Professional 是不是支持 Perl?
如何使用 Visual Studio 的 sonarlint 扩展检测新引入的代码气味/泄漏
检测程序是不是由 Visual Studio 运行,而不是从 Windows 资源管理器运行