使用 Clang++ 编译会忽略CMAKE_INCLUDE_PATH
Compile with Clang++ ignores CMAKE_INCLUDE_PATH
我正在尝试在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)
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- cmake如何在fedora工作站中找到boost静态库包
- GCC 包含标头(使用"-include")CMake 未检测到的更改
- CMake导出的库-在客户端应用程序中找不到include/Lib路径
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- Cmake,在 /usr/local/include 中查找头文件,在 /usr/local/lib 中查找库
- 如何在cmake项目中包含/usr/include中的头文件
- Cmake 和 QT5 - Include 只需要一个参数
- 避免在CMake中出现许多"../include"
- 从命令行调用CMake时,将include目录添加到CMake中
- FreeBSD 上的 CMake 在 /usr/local/include 中看不到 GL/gl.h
- 在Visual Studio中使用CMake显示include-directory作为项目的独立部分
- 如何在Linux中强制cmake使用/usr/include中的c++头文件?
- cmake-glob-include同时保留目录结构
- 如何将该工具与 CMake 一起使用'Include What You Use'来检测未使用的标头?
- CMake 错误在 CMakeLists.txt:56 (include): 包含找不到加载文件: gmxVersion
- cmake如何知道include文件和lib在哪里