2015-03-23 2 views
4

Я использую win32, macx и unix:!macx aka. Операторы Linux if в моем файле .pro, чтобы указать особые задачи, например.Есть ли 'или' обозначения в qmake

win32 { 
    TARGET = myapp 
    RC_FILE = myapp.rc 
} 
macx { 
    TARGET = MyApp 
    ICON = myapp.icns 
    QMAKE_INFO_PLIST = Info.plist 
} 
unix:!macx { # linux 
    CONFIG(debug, debug|release) { 
     TARGET = myapp-debug 
    } 
    CONFIG(release, debug|release) { 
     TARGET = myapp 
    } 
} 

Это прекрасно работает для if X else, if X elseif X else и if not X где X является ОС спецификатор.

Есть ли способ сказать qmake, он должен скомпилировать блок для os1 или os2?

ответ

5

Оператор | для логического or. Например:

win32|macx { 
    HEADERS += debugging.h 
} 

http://doc.qt.io/qt-4.8/qmake-advanced-usage.html

+0

Великого, спасибо. Оказывается, что '|' связывается сильнее, чем оператор ':'. Это можно обойти, используя недокументированные и операторы '&'. Например. 'unix | macx & CONFIG (выпуск, debug | release) {'работает на Linux debug где' unix | macx: CONFIG (выпуск, отладка | выпуск) {'does not. –

+0

Забудьте мой последний комментарий. Нет оператора '&'. Часть строки просто не анализировалась, потому что 'unix' был' true'. –

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

  • Нет связанных вопросов^_^