[英]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.