Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: sergek от Май 03, 2020, 11:15



Название: TARGET = thread
Отправлено: sergek от Май 03, 2020, 11:15
Коллеги,
угораздило меня назвать программу thread. Эффект меня удивил и отнял некоторое время, пока я понял, как от него избавиться. Но не понял, что это было :)
Нужно сделать:
Цитировать
qmake
make
make clean
make
Далее последует взрыв. Если TARGET переименовать, то все нормально. Объясните?


Название: Re: TARGET = thread
Отправлено: qate от Май 04, 2020, 11:05
видимо какойто баг креатора, в консоле руками - все ок
можно заводить багрепорт


Название: Re: TARGET = thread
Отправлено: sergek от Май 04, 2020, 11:34
видимо какойто баг креатора, в консоле руками - все ок
можно заводить багрепорт
Так ведь в линуксе я это делаю в терминале. Хотя в ubuntu 18.04 в креаторе то же самое. Фокусы начинаются, когда в каталоге сборки появляется файл thread. Кстати, в виндах этого нет, потому что создается thread.exe.


Название: Re: TARGET = thread
Отправлено: qate от Май 04, 2020, 14:20
странна, у мну на ubunut 19.10 щас так:

Код:
$ make
g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o main.cpp
g++ -Wl,-O1 -o thread main.o   /usr/lib/x86_64-linux-gnu/libQt5Core.so -lpthread
$


Название: Re: TARGET = thread
Отправлено: qate от Май 04, 2020, 14:47
а нет, что то непонятное есть:
1. сбой будет если исполняемый файл thread есть, а main.o нет
1. если убрать #include <QThread> - все ок


Название: Re: TARGET = thread
Отправлено: qate от Май 04, 2020, 14:49
все ясно - "проблема" в /usr/include/c++/9/future:39



Название: Re: TARGET = thread
Отправлено: sergek от Май 04, 2020, 16:27
Ну да, скорее всего эта причина, сам бы мог догадаться, спасибо. Хотя всегда считал, что g++ при include<> сначала ищет в системных путях, потом в каталогах проекта.


Название: Re: TARGET = thread
Отправлено: qate от Май 05, 2020, 20:46
тут я вижу три момента:
1. qmake вставил "-I." и "поломал" логику https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html
2. make clean - не удаляет бинарник thread, это делает make distclean
3. qtcreator по умолчанию использует make clean