【问题标题】:How to Change Default 'clang++' Include Directory Search Paths如何更改默认的“clang++”包括目录搜索路径
【发布时间】:2021-02-23 18:20:36
【问题描述】:

我正在使用 clang 在 OS X 10.11.7 上从源代码构建 Octave。 clang 正在引入 /usr/local/include/math.h 导致编译器错误:


In file included from libinterp/dldfcn/__delaunayn__.cc:54:
In file included from ./liboctave/array/dMatrix.h:31:
In file included from liboctave/numeric/DET.h:33:
In file included from liboctave/numeric/lo-mappers.h:35:
./liboctave/util/lo-ieee.h:93:59: error: expected unqualified-id
inline int __lo_ieee_float_finite (float x) { return std::isfinite (x); }
                                                          ^
/usr/local/include/math.h:155:5: note: expanded from macro 'isfinite'
    ( sizeof(x) == sizeof(float)  ? __inline_isfinitef((float)(x))  

我不知道如何让 clang++ 停止包含 /usr/local/include/math.h (它应该使用 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain//usr/include/c++/v1/math.h)

$ find /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ -name math.h -ls
12887319657       16 -rw-r--r--    1 root             wheel               50651 Dec 21 10:04 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain//usr/include/c++/v1/math.h

当我尝试编译器标志时,-nostdinc 和 -nostdinc++ 八度配置失败。

$ clang --verbose
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ xcrun --show-sdk-path
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk
xcode-s(base) MacBook-Pro:octave davidlaxer$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
(base) MacBook-Pro:octave davidlaxer$ clang++ -Wp,-v -x c++ -std=c++11 - -fsyntax-only < /dev/null
clang -cc1 version 12.0.0 (clang-1200.0.32.29) default target x86_64-apple-darwin19.6.0
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)
End of search list.

./configure --with-libiconv-prefix=/opt/local CXXFLAGS="-std=c++11 -stdlib=libc++"  CPPFLAGS="-I/Users/davidlaxer/SuiteSparse/include -I/opt/local/include -I/opt/local/libexec/qt5/include -I/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/include" LDFLAGS="-L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" DYLD_LIBRARY_PATH="-L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" LD_LIBRARY_PATH="-L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib" --with-suitesparseconfig-includedir=/Users/davidlaxer/SuiteSparse/include --with-suitesparseconfig-libdir=/Users/davidlaxer/SuiteSparse/lib --disable-readline  --with-sundials_ida-includedir=/opt/local/include/sundials --with-sundials_ida-libdir=/opt/local/lib/ --with-qt=5

...
Octave is now configured for x86_64-apple-darwin19.6.0

  Source directory:              .
  Installation prefix:           /usr/local
  C compiler:                    /usr/bin/clang  -D_THREAD_SAFE -pthread  -Wall -W -Wshadow -Wformat -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wcast-align -Wcast-qual -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
  C++ compiler:                  /usr/bin/clang++  -D_THREAD_SAFE -pthread  -Wall -W -Wshadow -Woverloaded-virtual -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -std=c++11 -stdlib=libc++
  Fortran compiler:              gfortran -g -O2 -std=legacy
  Fortran libraries:              -L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib -L/opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0 -L/opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0/../../.. -lgfortran -lquadmath -lm
  Lex libraries:                 
  LIBS:                           -lm 
  LDFLAGS:                       -L/Users/davidlaxer/SuiteSparse/lib/ -L/opt/local/lib -L/opt/local/libexec/qt5/lib -L/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib
  Extra LDFLAGS:                 

  AMD CPPFLAGS:                  
  AMD LDFLAGS:                   
  AMD libraries:                 -lamd
  ARPACK CPPFLAGS:               -I/opt/local/include/arpack
  ARPACK LDFLAGS:                -L/opt/local/lib
  ARPACK libraries:              -larpack
  BLAS libraries:                -lopenblas
  BZ2 CPPFLAGS:                  
  BZ2 LDFLAGS:                   
  BZ2 libraries:                 -lbz2
  CAMD CPPFLAGS:                 
  CAMD LDFLAGS:                  
  CAMD libraries:                -lcamd
  CARBON libraries:              -framework Carbon
  CCOLAMD CPPFLAGS:              
  CCOLAMD LDFLAGS:               
  CCOLAMD libraries:             -lccolamd
  CHOLMOD CPPFLAGS:              
  CHOLMOD LDFLAGS:               
  CHOLMOD libraries:             -lcholmod
  COLAMD CPPFLAGS:               
  COLAMD LDFLAGS:                
  COLAMD libraries:              -lcolamd
  CURL CPPFLAGS:                 
  CURL LDFLAGS:                  
  CURL libraries:                -lcurl
  CXSPARSE CPPFLAGS:             
  CXSPARSE LDFLAGS:              
  CXSPARSE libraries:            
  DL libraries:                  -ldl
  FFTW3 CPPFLAGS:                -I/opt/local/include
  FFTW3 LDFLAGS:                 -L/opt/local/lib
  FFTW3 libraries:               -lfftw3_threads -lfftw3
  FFTW3F CPPFLAGS:               -I/opt/local/include
  FFTW3F LDFLAGS:                -L/opt/local/lib
  FFTW3F libraries:              -lfftw3f_threads -lfftw3f
  FLTK CPPFLAGS:                 -I/opt/local/include
  FLTK LDFLAGS:                  -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -framework OpenGL -framework Cocoa
  FLTK libraries:                -lfltk_gl -lfltk -lpthread
  fontconfig CPPFLAGS:           -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include
  fontconfig libraries:          -lfontconfig -lfreetype
  FreeType2 CPPFLAGS:            -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include
  FreeType2 libraries:           -L/opt/local/lib -lfreetype
  GLPK CPPFLAGS:                 
  GLPK LDFLAGS:                  
  GLPK libraries:                -lglpk
  HDF5 CPPFLAGS:                 
  HDF5 LDFLAGS:                  
  HDF5 libraries:                -lhdf5
  Java home:                     /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
  Java JVM path:                 /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib/server
  Java CPPFLAGS:                 -I/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/include/darwin
  Java libraries:                
  KLU CPPFLAGS:                  
  KLU LDFLAGS:                   
  KLU libraries:                 -lklu
  LAPACK libraries:              
  LLVM CPPFLAGS:                 
  LLVM LDFLAGS:                  
  LLVM libraries:                
  Magick++ CPPFLAGS:             -I/opt/local/include/GraphicsMagick
  Magick++ LDFLAGS:              -L/opt/local/lib
  Magick++ libraries:            -lGraphicsMagick++ -lGraphicsMagick
  OpenGL libraries:              -framework OpenGL
  PCRE CPPFLAGS:                 -I/opt/local/include
  PCRE LDFLAGS:                  -L/opt/local/lib
  PCRE libraries:                -lpcre
  PortAudio CPPFLAGS:            -I/opt/local/include
  PortAudio LDFLAGS:             -L/opt/local/lib
  PortAudio libraries:           -lportaudio
  PTHREAD flags:                 -D_THREAD_SAFE -pthread
  PTHREAD libraries:             
  QHULL CPPFLAGS:                
  QHULL LDFLAGS:                 
  QHULL libraries:               -lqhull
  QRUPDATE CPPFLAGS:             
  QRUPDATE LDFLAGS:              
  QRUPDATE libraries:            -lqrupdate
  Qt CPPFLAGS:                   -I/opt/local/libexec/qt5/lib/QtNetwork.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtPrintSupport.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtHelp.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtGui.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtSql.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtXml.framework/Headers -I/opt/local/libexec/qt5/include -I/opt/local/libexec/qt5/lib/QtCore.framework/Headers -I/opt/local/libexec/qt5/include
  Qt LDFLAGS:                    -F/opt/local/libexec/qt5/lib 
  Qt GUI libraries:              -framework QtNetwork -framework QtPrintSupport -framework QtHelp -framework QtWidgets -framework QtGui -framework QtSql -framework QtXml -framework QtCore 
  Qt OpenGL libraries:           -framework QtOpenGL -framework QtWidgets -framework QtGui -framework QtCore 
  Qt moc:                        moc 
  Qt uic:                        uic 
  Qt rcc:                        rcc 
  Qt lrelease:                   lrelease 
  Qt qcollectiongenerator:       qcollectiongenerator 
  Qt qhelpgenerator:             qhelpgenerator 
  READLINE libraries:            
  Sndfile CPPFLAGS:              -I/opt/local/include
  Sndfile LDFLAGS:               -L/opt/local/lib
  Sndfile libraries:             -lsndfile
  SPQR CPPFLAGS:                 
  SPQR LDFLAGS:                  
  SPQR libraries:                -lspqr
  SuiteSparse config libraries:  -lsuitesparseconfig
  SUNDIALS IDA CPPFLAGS:         
  SUNDIALS IDA LDFLAGS:          
  SUNDIALS IDA libraries:        
  SUNDIALS NVECTOR CPPFLAGS:     
  SUNDIALS NVECTOR LDFLAGS:      
  SUNDIALS NVECTOR libraries:    
  SUNLINSOL KLU CPPFLAGS:        
  SUNLINSOL KLU LDFLAGS:         
  SUNLINSOL KLU libraries:       
  TERM libraries:                -lncurses
  UMFPACK CPPFLAGS:              
  UMFPACK LDFLAGS:               
  UMFPACK libraries:             -lumfpack
  X11 include flags:             
  X11 libraries:                 -lX11
  Z CPPFLAGS:                    
  Z LDFLAGS:                     
  Z libraries:                   -lz

【问题讨论】:

  • ./configure --help 是否提供任何可能有帮助的信息?也许是为了向 LDFLAGS 添加一个条目?还是 PKG_CONFIG_SYSROOT_DIR?
  • clang++ -E ... 输出(上图)1) 忽略了两个不存在的目录。它们来自哪里(提示-不是我可以看到的环境变量)。 2) 括号搜索规则以 /usr/local/include 开头。为什么?我尝试使用 CXXFLAGS =-I 规则更改搜索顺序,但它们不会更改一些更高优先级的规则。如何查看规则和/或修改它们以使用:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/,而不是/usr/local/include?这是“-std”规则吗? C++11?
  • From 'man clang++': CPATH 如果此环境变量存在,则将其视为要添加到默认系统包含路径列表的分隔路径列表。分隔符是与平台相关的分隔符,在 PATH 环境变量中使用。
  • 什么是“默认系统包含路径列表”?如何修改?
  • 我不了解 clang,但对于您的最后一个问题,这可能有用:stackoverflow.com/questions/8920640/…

标签: xcode clang octave xcrun


【解决方案1】:

搜索类似问题后... 例如。 - https://github.com/nlohmann/json/issues/2087

我不得不将 std=c++11 改为 std=c++17:

CXXFLAGS="-std=c++11 -stdlib=libc++ -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk"

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2021-07-22
    相关资源
    最近更新 更多