g2o 编译保持 unrecognized command line option “-msse4.2”的解决方法

arm64的板,编译g2o库,报错;
找到了Github上类似的问题GitHub相关问题描述链接
通过git checkout 4b9c2f5b68d14ad479457b18c5a2a0bce1541a90命令同步解决方案。我这边是直接修改Cmakelist.txt文件。
修改的内容github 变更详情
找到以下内容

  IF(NOT "${ARCH}" MATCHES "arm")
    # Generic settings for optimisation
    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse4.2")
    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse4.2")
  ENDIF()

替换为

# Start of SSE* autodetect code
# (borrowed from MRPT CMake scripts, BSD)
OPTION(DO_SSE_AUTODETECT "Enable autodetection of SSE* CPU sets and enable their use in optimized code" ON)
IF(NOT EXISTS "/proc/cpuinfo")
	SET(DO_SSE_AUTODETECT OFF)
ENDIF()
IF (DO_SSE_AUTODETECT)
  FILE(READ "/proc/cpuinfo" G2O_CPU_INFO)
ENDIF()

# Macro for each SSE* var: Invoke with name in uppercase:
macro(DEFINE_SSE_VAR  _setname)
	string(TOLOWER ${_setname} _set)
	IF (DO_SSE_AUTODETECT)
		# Automatic detection:
		SET(CMAKE_G2O_HAS_${_setname} 0)
		IF (${G2O_CPU_INFO} MATCHES ".*${_set}.*")
			SET(CMAKE_G2O_HAS_${_setname} 1)
		ENDIF()
	ELSE (DO_SSE_AUTODETECT)
		# Manual:
		SET("DISABLE_${_setname}" OFF CACHE BOOL "Forces compilation WITHOUT ${_setname} extensions")
		MARK_AS_ADVANCED("DISABLE_${_setname}")
		SET(CMAKE_G2O_HAS_${_setname} 0)
		IF (NOT DISABLE_${_setname})
			SET(CMAKE_G2O_HAS_${_setname} 1)
		ENDIF (NOT DISABLE_${_setname})
	ENDIF (DO_SSE_AUTODETECT)
endmacro(DEFINE_SSE_VAR)

# SSE optimizations:
DEFINE_SSE_VAR(SSE2)
DEFINE_SSE_VAR(SSE3)
DEFINE_SSE_VAR(SSE4_1)
DEFINE_SSE_VAR(SSE4_2)
DEFINE_SSE_VAR(SSE4_A)

# Add build flags for clang AND GCC
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
  # SSE2?
  IF (CMAKE_G2O_HAS_SSE2)
    add_compile_options(-msse2)
  ENDIF()
  # SSE3?
  IF (CMAKE_G2O_HAS_SSE3)
    add_compile_options(-msse3 -mssse3)
  ENDIF()
  # SSE4*?
  IF (CMAKE_G2O_HAS_SSE4_1)
    add_compile_options(-msse4.1)
  ENDIF()
  IF (CMAKE_G2O_HAS_SSE4_2)
    add_compile_options(-msse4.2)
  ENDIF()
  IF (CMAKE_G2O_HAS_SSE4_A)
    add_compile_options(-msse4a)
  ENDIF()
endif()
# End of of SSE* autodetect code -------

修改完成后,编译未再报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值