使用 Clang++ 编译会忽略CMAKE_INCLUDE_PATH

Compile with Clang++ ignores CMAKE_INCLUDE_PATH

本文关键字:CMAKE INCLUDE PATH Clang++ 编译 使用      更新时间:2023-10-16

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

#include <cln/cln.h>

#include <ginac/ginac.h>
尽管这两个库都安装在/usr/local/

lib 中,并且它们的包含目录(/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>
         ^

更新:

设法为详细添加了编译器标志,这向我表明,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)