Используйте CMAKE_PREFIX_PATH для сборок с несколькими конфигурациями - PullRequest
1 голос
/ 19 июня 2020

Я использую find_package для поиска Qt и добавляю "C: \ Qt \ 5.15.0 \ mingw81_64 \ lib \ cmake" в мою переменную среды CMAKE_PREFIX_PATH, и он работал нормально при использовании 64-разрядной версии до сейчас. Однако мне нужна возможность переключения между 32-битными и 64-битными сборками. Поэтому я также добавил эквивалентный указанный выше путь для 32-разрядной версии, однако это привело к ошибкам связывания (по-видимому, CMake не был уверен, какой из них выбрать, и выбрал неправильный для одной из конфигураций).

Что такое обычный способ исправить эту ситуацию? На данный момент я использую суффиксный путь и ищу в нем, зависящем от архитектуры компилятора, однако в идеале я хотел бы оставить этот материал вне самого проекта CMake и просто потребовать, чтобы пользователи проекта добавляли любое местоположение Qt самостоятельно, в то время как все еще может иметь "более одного" местоположения Qt.

Это разрешимо? Или наличие двух путей Qt в переменной CMAKE_PREFIX_PATH - это халатность?

1 Ответ

2 голосов
/ 19 июня 2020

Каков обычный способ исправить эту ситуацию?

Добавьте только к вашему CMAKE_PREFIX_PATH путь Qt, соответствующий вашей архитектуре.

[...] однако в идеале я бы хотел оставить этот материал вне самого проекта CMake и просто потребовать, чтобы пользователи проекта сами добавляли любое местоположение Qt, при этом сохраняя возможность "более одного" расположения Qt.

Вы можете попросить пользователей передать путь Qt в качестве параметра (при вызове CMake через командную строку)

cmake -DQT_PATH={PATH TO QT} ...

Или прочтите переменная среды (которую должен установить пользователь)

if(DEFINED ENV{QT_ENVIRON})
    set(QT_PATH $ENV{QT_ENVIRON})
else()
    set(QT_PATH ...)
endif()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...