首页 > 解决方案 > 现代 CMake 应该如何添加 SSE 标志?

问题描述

我正在尝试至少遵循现代 cmake >= 3.0 的指南,其中我不对编译器做任何假设并使用基于目标的命令。

请参阅:https ://www.youtube.com/watch?v= bsXLMQ6WgIk 或搜索“有效 cmake”。

那么,当我的目标依赖于 SSE 4.1 时,我应该如何声明这些信息?

我实际上期望 FindSSE 包含一个没有源但带有它自己的适当链接器标志的接口目标。但它仅说明主机上是否存在 SSE 版本。

这因平台而异,例如:/arch:sse4.1 vs -msse4.1

那么我是否缺少cmake内部的一些东西来处理不同编译器的这个设置,还是我只需要检查平台并相应地设置target_compile_options?

标签: c++cmake

解决方案


根据 lubgr 的回复,我设计了这个:

add_library(sse4_1 INTERFACE IMPORTED)
if(MSVC)
    target_compile_options(sse4_1 INTERFACE /arch:SSE4.1)
else()
    target_compile_options(sse4_1 INTERFACE -msse4.1)
endif()

推荐阅读