在 MacOS 上构建 OpenPose 时如何更改 CMake 中的 c++ 编译器版本?

问题描述 投票:0回答:1

我已经克隆了最新版本的 OpenPose 并尝试在 MacOS 13.5 (22G74) 上构建它。在我运行

make -j sysctl -n hw.logicalcpu
后,它会生成一堆错误,说我使用了过时的 C++ 版本:

/usr/local/include/google/protobuf/port_def.inc:205:1: error: static_assert failed due to requirement '201103L >= 201402L' "Protobuf only supports C++14 and newer."
static_assert(PROTOBUF_CPLUSPLUS_MIN(201402L), "Protobuf only supports C++14 and newer.");
^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/usr/local/include/absl/base/policy_checks.h:79:2: error: "C++ versions less than C++14 are not supported."
#error "C++ versions less than C++14 are not supported."

所以我搜索了 CMakeLists.txt 并将这些行添加到文件顶部:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

还将部分 c++ 标志部分更改为

std=c++14
:

elseif (UNIX)
  # Turn on C++14
  add_definitions(-std=c++14)
  set(CMAKE_CXX_FLAGS_RELEASE "-O3")
elseif (APPLE)
  # Turn on C++14
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
  set(CMAKE_CXX_FLAGS_RELEASE "-O3")
endif (WIN32)

# C++ additional flags
if (CMAKE_COMPILER_IS_GNUCXX)
  message(STATUS "GCC detected, adding compile flags")
  # set(OP_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -Wpedantic -Wall -Wextra -Wfatal-errors")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
  set(OP_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic -Wall -Wextra -Wfatal-errors")
  # set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -Wpedantic -Wall -Wextra -Wfatal-errors")
endif (CMAKE_COMPILER_IS_GNUCXX)

然后删除构建文件夹并重新执行这些步骤,但仍然出现相同的错误。我在终端中检查了 CMake 配置摘要,发现 c++ 的标志仍然设置为版本 11:

-- ******************* Caffe Configuration Summary *******************
-- General:
--   Version           :   1.0.0
--   Git               :   1.0-149-g1807aada
--   System            :   Darwin
--   C++ compiler      :   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
--   Release CXX flags :   -O3 -DNDEBUG -fPIC -Wall -std=c++11 -Wno-sign-compare -Wno-uninitialized
--   Debug CXX flags   :   -g -fPIC -Wall -std=c++11 -Wno-sign-compare -Wno-uninitialized
--   Build type        :   Release

现在我不知道如何更改标志和编译器版本。 我也找不到如何在 cmake-gui 中更改此设置,GUI 如下所示: 欢迎任何解决方案!

c++ macos cmake clang++ openpose
1个回答
0
投票

CMake 3.1 中引入了

CMAKE_CXX_STANDARD
变量,因此请确保使用
cmake_minimum_required(VERSION 3.1)
。如果这没有帮助,我在 Stack Overflow 上找到了这篇文章(How do I activate C++ 11 in CMake?),它可以为您提供更深入的答案。

© www.soinside.com 2019 - 2024. All rights reserved.