c++ - 现代 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?
解决方案
根据 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()
推荐阅读
- vue.js - Vuejs多个文件上传一次只上传1个文件
- javascript - React API 错误(未处理的拒绝(TypeError):无法读取未定义的属性“0”)
- node.js - Node.js + Sequelize + SQL Server
- python - AttributeError:“numpy.float64”对象没有属性“值”
- c# - 为什么 typeA == typeB 比 typeA == typeof(TypeB) 慢?
- javascript - JavaScript:在 AWS Lambda 节点应用程序中将 RSS 转换为 JSON
- arduino - 使用操纵杆使伺服电机运动更顺畅?
- java - 处理来自 PostgreSQL 的大量数据
- javascript - NodeJS按时间戳显示文档有延迟
- jestjs - 再添加一个测试文件时,纱线测试挂起