Qmake - 如何配置包含路径顺序?
Qmake - how to configure include path order?
我在 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
当我编译时得到这个输出:
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
我希望它是:
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
或:
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
换句话说 - 我想包含这条路径(
-I/✪Data_Disk⚜✼/Build/include/c++/v1
) 在系统定义之前或完全删除它们并仅保留它。有什么想法吗?
如果您查看 qmake
源代码,例如 Win32MakefileGenerator::writeStandardParts()
或 UnixMakefileGenerator::writeMakeParts()
,您将看到标志按以下顺序包含:
QMAKE_CC
QMAKE_CXX
QMAKE_CFLAGS
QMAKE_CXXFLAGS
INCLUDEPATH
- ...
INCLUDEPATH
总是在前四个之后。您可以使用 QMAKE_CXXFLAGS
并在其中添加 -I
路径:
QMAKE_CXXFLAGS += -I/✪Data_Disk⚜✼/Build/include/c++/v1
我在 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
当我编译时得到这个输出:
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
我希望它是:
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
或:
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
换句话说 - 我想包含这条路径(
-I/✪Data_Disk⚜✼/Build/include/c++/v1
) 在系统定义之前或完全删除它们并仅保留它。有什么想法吗?
如果您查看 qmake
源代码,例如 Win32MakefileGenerator::writeStandardParts()
或 UnixMakefileGenerator::writeMakeParts()
,您将看到标志按以下顺序包含:
QMAKE_CC
QMAKE_CXX
QMAKE_CFLAGS
QMAKE_CXXFLAGS
INCLUDEPATH
- ...
INCLUDEPATH
总是在前四个之后。您可以使用 QMAKE_CXXFLAGS
并在其中添加 -I
路径:
QMAKE_CXXFLAGS += -I/✪Data_Disk⚜✼/Build/include/c++/v1