MacOS下编译OpenPose时如何修改CMake中的C++编译器版本?
解决MacOS下OpenPose编译时C++版本过低的问题
问题根源是你看到的-std=c++11来自OpenPose内置的Caffe子项目,而非主项目配置,所以修改主目录的CMakeLists.txt无法覆盖这个设置。以下是几种可行的解决方案:
方法一:直接修改内置Caffe的CMake配置
- 找到OpenPose目录下的
3rdparty/caffe/CMakeLists.txt - 在文件顶部添加全局C++标准设置:
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) - 找到文件中设置编译标志的代码块,将
-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图形界面设置
- 打开CMake GUI,分别选择OpenPose根目录作为Source路径,新建的build文件夹作为Build路径
- 点击
Configure,选择默认的Xcode编译器 - 在配置界面的搜索框输入
CMAKE_CXX_STANDARD,将值改为14 - 搜索
CMAKE_CXX_STANDARD_REQUIRED,勾选其复选框 - 再次点击
Configure直到无红色条目,然后点击Generate - 进入build文件夹执行
make -j$(sysctl -n hw.logicalcpu)
完成以上操作后,重新查看CMake配置摘要,Caffe的Release/Debug CXX flags中应该会显示-std=c++14,此时编译即可正常进行。
内容的提问来源于stack exchange,提问作者YPZ404
相关产品推荐
相关产品推荐

