检测是不是在 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 资源管理器运行

是否有用于检测具有重复 GUID 的 Visual Studio 项目的工具?

运行时检测 Visual Studio 热键