簡體   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