Russian Qt Forum

Qt => Общие вопросы => Тема начата: Вячеслав от Октябрь 10, 2006, 18:12



Название: CONSOLE or not ;)
Отправлено: Вячеслав от Октябрь 10, 2006, 18:12
Собственно вопрос
кусок proшки
Код:
QT = core
CONFIG -= app_bundle
CONFIG += console

Соответственно прога собираеться под консоль ... А во время компиляции можно высянить что собираемся под консоль или ой ? Изучение mkspecs\* ничего не дало ... Или плохо искал ?

PS QT 4.1.4


Название: CONSOLE or not ;)
Отправлено: Alexei от Октябрь 10, 2006, 18:53
Можно. Например, для MSVC устанавливается /SUBSYSTEM:CONSOLE
Для nix, скорее всего, тоже что-нить такое есть. В крайнем случае в файл .pro можно добавить свой define


Название: CONSOLE or not ;)
Отправлено: Вячеслав от Октябрь 10, 2006, 18:55
Цитата: "Alexei"
Можно. Например, для MSVC устанавливается /SUBSYSTEM:CONSOLE
Для nix, скорее всего, тоже что-нить такое есть. В крайнем случае в файл .pro можно добавить свой define

Это линкеру скармливаеться .... А хотелось какой-нибудь #define найти :( Чтоб своего не городить ...


Название: CONSOLE or not ;)
Отправлено: Steven_Orko от Октябрь 10, 2006, 23:09
Ты не написал, какой версией КуТе пользуешься.
Так что вот тебе общий совет.

В про-файле ты можешь определить, содержит ли переменная CONFIG - console. Для этого есть специальная функция, которая используется только в файле проекта - contains. Вот ее некоторый пример из Assistant:

Код:
  contains( drivers, network ) {
      # drivers contains 'network'
      message( "Configuring for network build..." )
      HEADERS += network.h
      SOURCES += network.cpp
  }


Так что ты можешь таким же образом ее использовать для уже упоминавшейся проверки:

Код:
  contains( CONFIG, console ) {
      # CONFIG contains 'console'
      message( "Configuring for console build..." )
      DEFINES +=  CURRENT_BUILD_FOR_CONSOLE
  }


По поводу переменной:
DEFINES
qmake adds the values of this variable as compiler C preprocessor macros (-D option).
For example:

 DEFINES += USE_MY_STUFF QT_DLL

Ну, а делее сам уже знаешь:
Код:
#ifndef CURRENT_BUILD_FOR_CONSOLE 
...
#else
или
Код:
#ifdef CURRENT_BUILD_FOR_CONSOLE  
...
#else


Сам через файл проекта не проверял , но через ключи компилеру это точно работает. А судя по хелпу в Асистенте - это то же самое.


Название: CONSOLE or not ;)
Отправлено: Вячеслав от Октябрь 11, 2006, 00:00
Цитата: "Steven_Orko"
Ты не написал, какой версией КуТе пользуешься.

:( Последняя строка мессаги .... 4.1.4
За совет - бальшой спасиб ...
я пока  feature поправил ;) Может кулхацкерство - но работает ....


Название: CONSOLE or not ;)
Отправлено: Dendy от Октябрь 11, 2006, 03:19
В Qt4 синтаксис для проферки конфигурации ещё проще:

Код:
console {
    # CONFIG contains 'console'
    message( "Configuring for console build..." )
    DEFINES +=  CURRENT_BUILD_FOR_CONSOLE
}


Ентая запись работает только для содерживого CONFIG. Сам постоянно пользуюсь.

:D


Название: CONSOLE or not ;)
Отправлено: Steven_Orko от Октябрь 11, 2006, 19:38
Цитата: "Вячеслав"
Цитата: "Steven_Orko"
Ты не написал, какой версией КуТе пользуешься.

:( Последняя строка мессаги .... 4.1.4


Что-то у меня с внимательностью под вечер в последнее время стало ((((
Рад, что помогло )))