Qmake - 如何配置包含路径顺序?

AnA*_*ons 3 c++ qmake opensuse qt-creator clang++

我在OpenSUSE上有Qt-Creator.在其中有一个带有编译器'clang'的C++项目.我有'.pro'配置:

INCLUDEPATH += "/?Data_Disk??/Build/include/c++/v1/"

LIBS += "-stdlib=libc++"

LIBS += "/?Data_Disk??/Build/lib/libc++abi.a"

QMAKE_CXXFLAGS += -std=c++14 -stdlib=libc++

TARGET = testCpp

SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到了这个输出:

clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/linux-clang -I../testCpp -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I/?Data_Disk??/Build/include/c++/v1 -I. -I../testCpp -I. -o main.o ../testCpp/main.cpp
Run Code Online (Sandbox Code Playgroud)

我希望它是:

clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/?Data_Disk??/Build/include/c++/v1 -I/usr/share/qt4/mkspecs/unsupported/linux-clang -I../testCpp -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I../testCpp -I. -o main.o ../testCpp/main.cpp
Run Code Online (Sandbox Code Playgroud)

要么:

clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/?Data_Disk??/Build/include/c++/v1 -o main.o ../testCpp/main.cpp
Run Code Online (Sandbox Code Playgroud)

换句话说 - 我想要包含这条路径(

-I /✪Data_Disk⚜✼/生成/包括/ C++/V1

)在系统定义之前或完全删除它们并仅留下它.有任何想法吗?

svl*_*sov 5

qmake例如,如果您查看源代码,Win32MakefileGenerator::writeStandardParts()或者UnixMakefileGenerator::writeMakeParts()您将看到按以下顺序包含标志:

  1. QMAKE_CC
  2. QMAKE_CXX
  3. QMAKE_CFLAGS
  4. QMAKE_CXXFLAGS
  5. INCLUDEPATH
  6. ...

INCLUDEPATH总是在前四个之后.你可以QMAKE_CXXFLAGS-I那里使用和添加路径:

QMAKE_CXXFLAGS += -I/?Data_Disk??/Build/include/c++/v1
Run Code Online (Sandbox Code Playgroud)