我遇到了一个我无法避免的问题。 Redhat 6(或大多数linux软件包)附带一个默认的QT软件包,在/ usr / lib和/ usr / include文件夹中安装了header / etc。
现在,我想在不删除旧版本的情况下链接到较新版本的QT。不幸的是,由于标题位于/ include /文件夹中,gcc会自动找到它们,然后使用错误的包含文件(而不是我在其他地方使用的文件)。
我似乎无法阻止编译器自动执行此操作。我之前通过简单地手动删除旧库/标题来解决它,但这是一个长期可怕的解决方案。
我认为这个问题也不是QT特有的,它恰好是我当前的实例。
有什么建议吗?
非常感谢:)
答案 0 :(得分:4)
如果通过-I
选项提供较新Qt安装的include目录,则应在标准包含目录(即/ usr / include等)之前搜索它。从搜索路径中删除标准包含目录完全可能不是一个好主意,因为那里也会找到标准标题(请注意,Qt标题本身很可能包含标准标题,如果找不到标题标题,则不起作用。)
但是,如果您真的不希望搜索标准包含目录,则选项-nostdinc
应该可以执行您想要的操作。
答案 1 :(得分:1)
我的问题与使用的qmake版本有关。它找到了qmake的先前版本,即使它来自qt4,它也链接到错误的包含。
更新qmake路径有助于解决此问题。