2014-09-18 5 views
2

Я компилирую для платформы QNX, ARM, My Host, может быть Win32/64, Linux или Mac Я хочу найти способ увидеть, что пшеница - это моя платформа-хост в мой PRO-файл (на компьютере я строить мой проект)QMAKE. Как определить платформу хоста и целевую платформу при кросс-компиляции проектов QT

Видимо с помощью:

win32 {} 
unix {} 
macx {} 

не работает, потому что на разных операционных системах, он всегда будет сообщать о UNIX, поэтому я предполагаю, что это целевая платформа так что же такое способ получить текущую платформу хоста, чтобы сделать PRO-файл гибким, потому что на другой платформе я хотел бы делать разные вещи.

Спасибо

+0

Это для ** цели **, которая является QNX/ARM. Вы можете посмотреть переменные * HOST * в [настройке Qmake] (http://qt-project.org/doc/qt-5/qmake-environment-reference.html). Я не знаю, имеют ли файлы проекта условный синтаксис для ОС хоста, как вы показываете для цели. Попробуйте 'message (Host: $$ [QT_HOST_PREFIX])' например. Кстати, я думаю, что тег [tag: qt5] релевантен или вы на Qt4? –

+0

Уверен, это один из вариантов! Я думаю, что $$ [QMAKE_SPEC] будет немного лучше в моем случае. –

ответ

2

не могли бы что-нибудь лучше, то:

QMAKE_SPEC_T = $$[QMAKE_SPEC] 

contains(QMAKE_SPEC_T,.*win32.*){ 
    HOST_PLATFORM=WIN 
    IS_WIN = 1 
} 

contains(QMAKE_SPEC_T,.*macx.*){ 
    HOST_PLATFORM=MAC 
    IS_MAC = 1 
} 

contains(QMAKE_SPEC_T,.*linux.*){ 
    HOST_PLATFORM=LINUX 
    IS_LINUX = 1 
} 

, а затем в любом месте, чтобы проверить:

!isEmpty(IS_WIN):message($${HOST_PLATFORM}) 
!isEmpty(IS_MAC):message($${HOST_PLATFORM}) 
!isEmpty(IS_LINUX):message($${HOST_PLATFORM}) 
2

Может QMAKE_HOST переменная является ответом на ваш вопрос?

Вот информация из official Qt documentation:

QMAKE_HOST

Предоставляет информацию о хост-машине под управлением QMAKE. Например, вы можете получить архитектуру хост-машины из QMAKE_HOST.arch.

  • .arch - Принимающая архитектура
  • .os - Хост OS
  • .cpu_count - Количество доступных процессоров
  • .name - Имя хоста компьютера
  • .version - Host версия OS номер
  • .version_string - строка версии ОС хоста

win32-g++:contains(QMAKE_HOST.arch, x86_64):{ message("Host is 64bit") ... }

Смежные вопросы