Я имею в виду сценарий, подобный представленному ниже:
Для правильной сборки проекта A требуется Qt 5.5.1, который доступен по системному пути, то есть /usr/lib/x86_64-linux-gnu
.
Для правильной сборки проекта B необходим Qt 5.12.0, который установлен в домашнем каталоге, т.е. /home/user/Qt/5.12.0/gcc_64
.
Проект A CMakeLists.txt использует find_package(Qt5 5.5.1 EXACT REQUIRED COMPONENTS Core etc.)
Проект B использует CMakeLists.txt.find_package(Qt5 5.12.0 EXACT REQUIRED COMPONENTS Core etc. PATHS "/home/user/Qt/5.12.0/gcc_64" NO_DEFAULT_PATH)
.
Для обоих списков CMake требуется версия CMake 2.8.12.
Результаты:
- Проект A работает как шарм.
- Проект B предупреждает о
runtime library [libQt5Core.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in: /home/user/Qt/5.12.0/gcc_64
- Компоновщик проекта B сообщает о большом количестве неопределенных ссылок.
Как мы видим, это решение не работает.Почему?
РЕДАКТИРОВАТЬ: Qt5_DIR
кажется правильным для каждого проекта, но Qt5<ComponentName>_VERSION
выключены.Похоже, что компоненты, используемые в проекте A, сняты и неправильно использованы для проекта B. Как это преодолеть?