Невозможно увидеть вывод скомпилированного сценария C ++ с Qt в терминале - PullRequest
0 голосов
/ 01 августа 2020

Использование QT Creator 4.12.14 QT 5.15 MacOS 10.14.6

Я пытаюсь запустить простой скрипт с именем main.cpp в папке hello1 в Qt

#include <iostream>
using namespace std;

int main()
{
  cout << "hello world";
  return 0;
}

Я могу без проблем скомпилировать и запустить скрипт из терминала:

[mymac@hello1]$ which g++-9
/usr/local/bin/g++-9
[mymac@hello1]$ g++-9 -o main main.cpp
[mymac@hello1]$ ./main
hello world%

Однако, когда я компилирую скрипт в Qt Creator (который по умолчанию выбирает компилятор Clang (C++, x86 64bit in /usr/bin)), исполняемый файл не создается и код не запускается. Что происходит, так это то, что на экране появляется окно терминала с таким текстом:

/var/folders/jq/yyp9q2fs1z5780k9l1_2ph4r0000gn/T/tmpMNS3x9 ; exit;
[mymac@documents]$ /var/folders/jq/yyp9q2fs1z5780k9l1_2ph4r0000gn/T/tmpMNS3x9 ; exit;
[mymac@documents]$ 

Более того (если это помогает), во вкладке «Компиляция Qt Creator - 4» появляется такой вывод:

19:30:02: Running steps for project hello1...
19:30:02: Configuration unchanged, skipping qmake step.
19:30:02: Starting: "/usr/bin/make" -j8
make: Nothing to be done for `first'.
19:30:02: The process "/usr/bin/make" exited normally.
19:30:02: Elapsed time: 00:00.

Более того, я могу успешно скомпилировать код, найденный на по этой ссылке

Что я делаю неправильно и не могу скомпилировать простой main.cpp скрипт? Это потому, что я использую 2 разных компилятора? Каков точный обходной путь для компиляции скрипта в QT?

Содержимое файла .pro следующее:

QT -= gui

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

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

ИЗМЕНИТЬ после попытки, QT действительно компилируется, если вы выбираете «выпуск» вместо «Отладка» в меню внизу слева. Исполняемый файл находится в родительском каталоге. Вывод можно увидеть в консоли, если не отмечен project > run > run in terminal. Однако, если я поставлю этот флажок, то же самое, что и в терминале (без hello world появляется:

/var/folders/jq/yyp9q2fs1z5780k9l1_2ph4r0000gn/T/tmpMNS3x9 ; exit;
[mymac@documents]$ /var/folders/jq/yyp9q2fs1z5780k9l1_2ph4r0000gn/T/tmpMNS3x9 ; exit;
[mymac@documents]$ 

Что мне делать, чтобы исполняемый файл запускался в терминале?

...