其他分享
首页 > 其他分享> > c – 为什么在定义CXX时cmake会忽略ADD(SYSTEM)头文件?

c – 为什么在定义CXX时cmake会忽略ADD(SYSTEM)头文件?

作者:互联网

我遇到了以下恼人的问题.我在OSX上通过macports安装了g,一切正常.但是,cmake仍然将clang检测为cpp编译器.因此,我最终投入

export CXX=/opt/local/bin/g++

在我的个人资料中现在,cmake正确地将g检测为编译器.问题是我包含的所有系统头文件

INCLUDE_DIRECTORIES(SYSTEM "/path/to/system/header)

包含在常规标题中.换句话说,我得到了一大堆警告(-Wall),我非常想抑制它,因为我不关心像Boost或Eigen这样的系统头文件中的警告.

知道如何解决这个问题吗?它让我发疯,我完全不解为什么在配置文件中添加CXX会导致这种行为.如果我从我的配置文件中删除导出CXX并在CMakeLists.txt中手动将CMAKE_CXX_COMPILER设置为g,那么一切都很好,不再有系统文件警告.

解决方法:

我终于找到了一个解决方案,从某个随机发现的帖子:http://www.cmake.org/pipermail/cmake/2011-June/044769.html.由于某种原因,SYSTEM指令被忽略了.设置

SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")

解决它,不再为系统文件生成警告.

这是一个非常特殊的问题,仅出现在OS X上.在我测试的所有其他系统上,INCLUDE_DIRECTORIES(SYSTEM“/ path / to / system / header”)将标头添加为系统标头,而无需使用上面的SET.

标签:c,macos,cmake,macports
来源: https://codeday.me/bug/20190829/1764280.html