繁体   English   中英

使用Clang ++编译会忽略CMAKE_INCLUDE_PATH

[英]Compile with Clang++ ignores CMAKE_INCLUDE_PATH

我试图在OS X上用clang ++和CXX_FLAGS“-Wall -stdlib = libc ++ -std = c ++ 11”编译一个c ++项目。该项目是一个CMAKE项目,需要包含cln和ginac。 但是,当我给出这样的include语句时,编译器找不到相应的头:

#include <cln/cln.h>

要么

#include <ginac/ginac.h>

虽然两个库都安装在/ usr / local / lib中,但它们的include目录(/ usr / local / include / cln和/ usr / local / include / ginac)存在。 我试过了

set(CMAKE_INCLUDE_PATH /usr/local/include/cln:/usr/local/include/ginac )

但它没有显示任何效果,错误消息保持不变:

fatal error: 'ginac/ginac.h' file not found
#include <ginac/ginac.h>
         ^

更新:

我设法为verbose添加编译器标志,这告诉我,clang搜索所需标头的路径是错误的,所以问题似乎与如何更改这些路径的问题类似:

#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks (framework directory)
End of search list.

而所需的标题仍在/ usr / local / include中。

更新2添加CXX_FLAG

-I/usr/local/include

解决问题 - 我可以在哪里全局设置为默认值?

添加CXX_FLAG

-I/usr/local/include

解决了这个问题。

我只想在讨论中添加我遇到的几乎与作者相同的问题,其中CMakeLists.txt文件中的include_directories("/usr/local/include/something")不起作用,但是我能够绕过使用通过向CMakeLists.txt文件添加特定编译器标志建议的方法的问题:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/local/include/something")

这可能是cmake中的一个错误吗? 这个问题只是一个相关的问题,但可能对试图找到这个问题的人有用: https//gitlab.kitware.com/cmake/cmake/issues/19120

您正在指定CMakeFile.txt的完整路径,包括子目录。 这意味着当您包含例如<cln/cln.h> ,预处理器将查找/usr/local/include/cln/cln/cln.h

试着改为例如

set(CMAKE_INCLUDE_PATH /usr/local/include)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM