CMakeLists.txt 之 多重判断宏定义

ARM 149浏览


【需求】 需要根据不同的平台去使用不用的程序代码。

【知其然知其所以然】 因为在使用SSE指令集时候,只能在Intel核心的机器上使用,但是很多ARM机器上是使用ARM指令集,这就需要根据宏定义来根据不同机器的核心来选择正确的代码段。增加了代码的鲁棒性。


CMakeLists.txt 的编写

# 设置个宏定义开关
option(USE_SSE         "Set to switch to build use SSE"  ON)
option(USE_ARM_NEON    "Set to switch to build use arm-neon" OFF)
if (USE_SSE)
    add_definitions(-DUSE_SSE) # 宏定义 USE_SEE
    message(STATUS "Use SSE")
elseif(USE_ARM_NEON)
    add_definitions(-DUSE_ARM_NEON) # 宏定义 USE_ARM_NEON
    message(STATUS "Use ARM_NEON")
else()
    message(STATUS "Use Nothing")
endif()

c++代码的编写:

#ifdef USE_SSE
/* handle something use SSE*/
#elif USE_ARM_NEON
/* handle something use ARM_NEON */
#else
/* handle something use nothing */
#endif