You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下编译OpenPose时如何修改CMake中的C++编译器版本?

解决MacOS下OpenPose编译时C++版本过低的问题

问题根源是你看到的-std=c++11来自OpenPose内置的Caffe子项目,而非主项目配置,所以修改主目录的CMakeLists.txt无法覆盖这个设置。以下是几种可行的解决方案:

方法一:直接修改内置Caffe的CMake配置

  1. 找到OpenPose目录下的3rdparty/caffe/CMakeLists.txt
  2. 在文件顶部添加全局C++标准设置:
    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
  3. 找到文件中设置编译标志的代码块,将-std=c++11替换为-std=c++14,比如:
    原代码:
    if(UNIX OR APPLE)
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
    endif()
    
    修改后:
    if(UNIX OR APPLE)
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++14")
    endif()
    

方法二:用CMake命令行参数强制全局C++标准

无需修改任何配置文件,删除build文件夹后直接通过参数指定:

rm -rf build
mkdir build && cd build
cmake -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=ON ..
make -j$(sysctl -n hw.logicalcpu)

该参数会强制所有子项目(包括内置Caffe)使用C++14标准。

方法三:CMake GUI图形界面设置

  1. 打开CMake GUI,分别选择OpenPose根目录作为Source路径,新建的build文件夹作为Build路径
  2. 点击Configure,选择默认的Xcode编译器
  3. 在配置界面的搜索框输入CMAKE_CXX_STANDARD,将值改为14
  4. 搜索CMAKE_CXX_STANDARD_REQUIRED,勾选其复选框
  5. 再次点击Configure直到无红色条目,然后点击Generate
  6. 进入build文件夹执行make -j$(sysctl -n hw.logicalcpu)

完成以上操作后,重新查看CMake配置摘要,Caffe的Release/Debug CXX flags中应该会显示-std=c++14,此时编译即可正常进行。

内容的提问来源于stack exchange,提问作者YPZ404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:57:30