![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#11
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Теперь вопрос. А почему оно так? ) Где написано что все файлы проекта должны быть одного типа?...Почему g++ умеет работать с разными типамиа QtCreator нет?.. Почему производитель выдал пример в котором разные типы файлов (c и cpp), всмысле он жеж явно это не специально засаду остраивал.. наверно были причины... но какие? ) Потому что при компиляции в командной строчке через задание опций g++ Вы не создаете Makefile (для Qt Creator - это pro-файл) и четко говорите, что хотите компилировать по правилам С++. Если бы вы файлы *.c задали через опции gcc, тогда бы Вы компилировали бы проект по правилам C. И, вполне возможно, появились бы те же ошибки, что и при создании через Qt Creator проекта компиляции для C, а не C++. Ну и, соответственно, при создании проекта через Qt Creator, IDE создает pro-файл автоматически, в котором четко определено по каким правилам (C or C++) и как именно надо компилировать и собирать. Поэтому если Вы хотите знать, из-за чего у Вас не собирается под C проект, то необходимо привести полный список ошибок, причем не в собственной интерпретации, а в том виде, что выдал компилятор. Так будет проще пояснить из-за чего сборка провалилась. Подозреваю, что дело, скорее всего, в специфике использования C++ возможностей, которых нет в C. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Извиняюсь, что пропал.
Где написано что все файлы проекта должны быть одного типа?...Почему g++ умеет работать с разными типамиа QtCreator нет? Собственно поэтому я и хотел, чтобы в Makefile была найдена результирующая строка, чтобы увидеть какие опции скармливаются компилятору.Я не понимаю что нужно искать. Поясните пожалуйста.Но строку типа "g++ ......" я не видел ни в одном из этих файлов. строки типа g++ ... не найдёшь, т.к. компилятор присваивается переменной, и далее она используется:
т.е искать нужно: $(CXX) ... или $(CC) ... qmake генерит Makefile на основе правил указанных для конкретного компилятора в папке %QTDIR%/mkspecs/<компилятор> Для MinGW это обычно папка %QTDIR%/mkspecs/win32-g++ посмотри там файл qmake.conf для qmake существуют переменные управляющие генерацией Makefile ты увидишь их в qmake.conf А вообще для успешной сборки смешанного Си/С++ проекта, нужно в заголовочниках указывать компилятору как декорировать имена:
|
|
|
JustOneQuestion |
![]()
Сообщение
#13
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Так, если я правильно понял, то верятно разница между С и С++ вот в этих строках.
CFLAGS = -pipe -fno-keep-inline-dllexport -O2 -Wall -Wextra $(DEFINES) CXXFLAGS = -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) Просто дальше, когда используется $(CXX) $(CC) то они везде используются одинаково за исключением флагов. Например $(CC) -c $(CFLAGS) $(INCPATH) -o release\file1.o ..\file1.c $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< А вот в qmake.conf в win32-g++ Есть вот такое. QMAKE_CFLAGS = -pipe -fno-keep-inline-dllexport QMAKE_CFLAGS_DEPS = -M QMAKE_CFLAGS_WARN_ON = -Wall -Wextra QMAKE_CFLAGS_WARN_OFF = -w QMAKE_CFLAGS_RELEASE = -O2 QMAKE_CFLAGS_DEBUG = -g QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections QMAKE_CFLAGS_SSE2 = -msse2 -mstackrealign QMAKE_CFLAGS_SSE3 = -msse3 QMAKE_CFLAGS_SSSE3 = -mssse3 QMAKE_CFLAGS_SSE4_1 = -msse4.1 QMAKE_CFLAGS_SSE4_2 = -msse4.2 QMAKE_CFLAGS_AVX = -mavx QMAKE_CFLAGS_AVX2 = -mavx2 QMAKE_CFLAGS_NEON = -mfpu=neon QMAKE_CXX = $${CROSS_COMPILE}g++ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD QMAKE_CXXFLAGS_RTTI_ON = -frtti QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions QMAKE_CXXFLAGS_CXX11 = -std=c++0x QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS Там конечно ещё много чего. Но если четсно, то не сочтите за ленивость, но мне важно чтобы дейвас заработал и я код мог для НЕГО написать... а вот разбираться во всех параметрах всёже немного не моя область. Пока что проблем с проектом у меня нет, и я пожалуй до следущих проблем ![]() Однако, если есть вопросы, касательно моего кода.. всмысле ТАКОГО кода, который работает в командной строке и QtCreator по разному, то вы спрашивайте, предлагайте что хотите проверить и какие стоят где настройки. Может это кому-то окажется полезным. Буду рад. |
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Так, если я правильно понял, то верятно разница между С и С++ вот в этих строках. CFLAGS = -pipe -fno-keep-inline-dllexport -O2 -Wall -Wextra $(DEFINES) CXXFLAGS = -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) Просто дальше, когда используется $(CXX) $(CC) то они везде используются одинаково за исключением флагов. Например $(CC) -c $(CFLAGS) $(INCPATH) -o release\file1.o ..\file1.c $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< Все просто: $(CXXFLAGS) - флаги компилятора С++, так как CXX - это С++, по сути, а CFLAGS - флаги С, соответственно. Там конечно ещё много чего. Но если четсно, то не сочтите за ленивость, но мне важно чтобы дейвас заработал и я код мог для НЕГО написать... а вот разбираться во всех параметрах всёже немного не моя область. Пока что проблем с проектом у меня нет, и я пожалуй до следущих проблем ![]() Однако, если есть вопросы, касательно моего кода.. всмысле ТАКОГО кода, который работает в командной строке и QtCreator по разному, то вы спрашивайте, предлагайте что хотите проверить и какие стоят где настройки. Может это кому-то окажется полезным. Буду рад. Вот гадом буду, если ошибусь во мнении, но, на мой взгляд, оно будет у всех отвечающих форумчан! ![]() ![]() ![]() ![]() |
|
|
JustOneQuestion |
![]()
Сообщение
#15
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! ![]() ![]() ![]() Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както ) Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности. А вот что касается так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой ) Только если, у этого кого-то не будет похожей задачки! Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! ![]() ![]() ![]() Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както ) Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности. А вот что касается Только если, у этого кого-то не будет похожей задачки! так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой ) Так... я прошу прощение за странность такого поста.... я так и не понял КАК тут можно редактировать СВОЙ ПОСТ! ))) Админы,... кнопочку РЕДАКТИРОВАТЬ пожалуйста добавте... ииили скажите где она тут у вас .... ну и поправте если можно пост. ) |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 18.5.2025, 0:29 |