Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Терминал или нет?


Автор: OlegIT 6.3.2020, 15:52
Как в консольной программе узнать (на стадии компиляции, через #ifdef) запущена она в терминале или нет?

Автор: kapbepucm 11.3.2020, 16:07
На стадии компиляции "консольная программа" ещё не запущена, она ничего не может ещё узнать smile
Но, тем не меннее, компилятор может узнать свой родительский процесс, и, если он чемто не удовлетворяет или удовлетворяет, выполнять #ifdef. В таком случае проще будет дёргать чтото платформозависимое, я думаю.
Ещё вопрос, что подразумевается под словом "терминал" в вашем случае?

Автор: OlegIT 11.3.2020, 20:46
Под терминалом я понимаю то, что обвёл красным эллипсом на картинке.
Не представляю пока, что можно такое проверить "платформозависимое".

Автор: kapbepucm 13.3.2020, 13:57
Предположу, что флажок, который на картинке отвечает за "запуск в терминале" относится к запуску уже скомпилированной программы, то есть это не удовлетворяет условию, что проверка должна происходить до или во время компиляции.

Автор: OlegIT 13.3.2020, 15:27
А как же тогда программа работает без криэйтора, собрал с терминалом запускается в терминале, без терминала, фоново работает.
Кстати, если запускать программу без терминала то в диспетчере её не видна, но программа работает.

Автор: kapbepucm 13.3.2020, 17:30
Цитата(OlegIT @  13.3.2020,  15:27 Найти цитируемый пост)
А как же тогда программа работает без криэйтора, собрал с терминалом запускается в терминале, без терминала, фоново работает.

Зависит от строки в *.pro файле
Код
CONFIG += console


Цитата(OlegIT @  13.3.2020,  15:27 Найти цитируемый пост)
если запускать программу без терминала то в диспетчере её не видна
По идее такого быть не должно, хотя, говорят, для windows это нормально не знать о всех процессах smile

Автор: OlegIT 13.3.2020, 20:39
Нет у меня такого
Цитата

Зависит от строки в *.pro файле
Код

CONFIG += console


только
CONFIG += mobility
и
CONFIG(debug, debug|release) {
...}
От установки или снятия флажка pro файл не меняется.

Автор: kapbepucm 17.3.2020, 10:24
Какая операционная система используется? Какая версия creator? Есть ли возможность собрать проект без использования creator?

Автор: OlegIT 18.3.2020, 08:24
Windows 10 Pro   64 bit, Qt Creator 4.8.2, Qt 5.12.2.
Цитата

Есть ли возможность собрать проект без использования creator?

Так по Windows ни когда не работал, под Linux немного когда-то пробовал, но уже довольно давно работаю с Qt и командную строку успел хорошо забыть:)

Автор: kapbepucm 18.3.2020, 15:44
Цитата(OlegIT @  18.3.2020,  08:24 Найти цитируемый пост)
Windows 10 Pro   64 bit, Qt Creator 4.8.2, Qt 5.12.2.
К сожалению, воспроизвести нет возможности, так как нет машин с подобным софтом :(
В своих windows проектах использую 
Цитата(kapbepucm @  13.3.2020,  17:30 Найти цитируемый пост)
CONFIG += console
если требуется консольный ввод/вывод.

Автор: OlegIT 18.3.2020, 15:46
Переделал программу, получил
Цитата

CONFIG += c++11 console
CONFIG -= app_bundle

Но всё одно, от установки/снятия флажка ни чего не меняется.

Автор: xiaofeifei131 25.5.2020, 20:07
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)