我遇到了以下恼人的问题。我在OSX上通过macports安装了g ++,一切正常。但是,cmake仍然会将clang ++检测为cpp编译器。因此,我最终把
SELECT Avis,Cde_Sap,Don_Ordre,PN_in ,SN_in,DATE2,Statut_Cde
FROM w2
UNION ALL
SELECT Avis,Cde_Sap,Don_Ordre,PN_in ,SN_in,DATE2,Statut_Cde
FROM w3
在我的个人资料中。现在,cmake正确地将g ++检测为编译器。问题是我用
包含的所有系统头文件export CXX=/opt/local/bin/g++
包含在常规标题中。换句话说,我得到了一大堆警告(INCLUDE_DIRECTORIES(SYSTEM "/path/to/system/header)
),我非常想抑制它,因为我不关心像Boost或Eigen这样的系统标题中的警告。
知道如何解决这个问题吗?它让我发疯,我完全不解为什么在配置文件中添加-Wall
导致此行为。如果我从我的个人资料中删除CXX
并在export CXX
中手动将CMAKE_CXX_COMPILER
设置为g ++,那么一切都很好,不再有系统文件警告。
答案 0 :(得分:4)
我终于找到了一个解决方案,从某个随机发现的帖子: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
。
答案 1 :(得分:1)
将export CXX=/opt/local/bin/g++
与其他几个不适应的系统变量一起使用似乎有点不正统,所以奇怪的行为可能并不令人惊讶。
我建议您从头开始配置(=从一个干净的构建目录中)来自cmake-gui的项目,该菜单允许您指定要使用的编译器的路径。您还可以使用自定义工具链文件。我建议你使用cmake-gui,它提供了一些可以解决你问题的选择。
一旦你做对了,你可以为其他人建立你的项目记录the equivalent command line instruction。