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