我尝试至少遵循现代 cmake >= 3.0 的准则,其中我不假设有关编译器的任何内容并使用基于目标的命令。
请参阅:https ://www.youtube.com/watch? v=bsXLMQ6WgIk 或搜索“ effective cmake”。
我实际上期望 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()
Run Code Online (Sandbox Code Playgroud)