QtCreator vs CMD.exe, Разница в работе |
Здравствуйте, гость ( Вход | Регистрация )
QtCreator vs CMD.exe, Разница в работе |
AD |
14.5.2015, 0:36
Сообщение
#11
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Теперь вопрос. А почему оно так? ) Где написано что все файлы проекта должны быть одного типа?...Почему 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 |
17.5.2015, 0:17
Сообщение
#12
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Извиняюсь, что пропал.
Где написано что все файлы проекта должны быть одного типа?...Почему g++ умеет работать с разными типамиа QtCreator нет? Собственно поэтому я и хотел, чтобы в Makefile была найдена результирующая строка, чтобы увидеть какие опции скармливаются компилятору.Я не понимаю что нужно искать. Поясните пожалуйста.Но строку типа "g++ ......" я не видел ни в одном из этих файлов. строки типа g++ ... не найдёшь, т.к. компилятор присваивается переменной, и далее она используется:
т.е искать нужно: $(CXX) ... или $(CC) ... qmake генерит Makefile на основе правил указанных для конкретного компилятора в папке %QTDIR%/mkspecs/<компилятор> Для MinGW это обычно папка %QTDIR%/mkspecs/win32-g++ посмотри там файл qmake.conf для qmake существуют переменные управляющие генерацией Makefile ты увидишь их в qmake.conf А вообще для успешной сборки смешанного Си/С++ проекта, нужно в заголовочниках указывать компилятору как декорировать имена:
|
|
|
JustOneQuestion |
20.5.2015, 17:11
Сообщение
#13
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: 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 Там конечно ещё много чего. Но если четсно, то не сочтите за ленивость, но мне важно чтобы дейвас заработал и я код мог для НЕГО написать... а вот разбираться во всех параметрах всёже немного не моя область. Пока что проблем с проектом у меня нет, и я пожалуй до следущих проблем отложу свой интузиазм копания в настройках Qt. Однако, если есть вопросы, касательно моего кода.. всмысле ТАКОГО кода, который работает в командной строке и QtCreator по разному, то вы спрашивайте, предлагайте что хотите проверить и какие стоят где настройки. Может это кому-то окажется полезным. Буду рад. |
|
|
AD |
20.5.2015, 23:37
Сообщение
#14
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Так, если я правильно понял, то верятно разница между С и С++ вот в этих строках. 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 - флаги С, соответственно. Там конечно ещё много чего. Но если четсно, то не сочтите за ленивость, но мне важно чтобы дейвас заработал и я код мог для НЕГО написать... а вот разбираться во всех параметрах всёже немного не моя область. Пока что проблем с проектом у меня нет, и я пожалуй до следущих проблем отложу свой интузиазм копания в настройках Qt. Однако, если есть вопросы, касательно моего кода.. всмысле ТАКОГО кода, который работает в командной строке и QtCreator по разному, то вы спрашивайте, предлагайте что хотите проверить и какие стоят где настройки. Может это кому-то окажется полезным. Буду рад. Вот гадом буду, если ошибусь во мнении, но, на мой взгляд, оно будет у всех отвечающих форумчан! Сам по себе код никому из форумчан лично нафиг не нужен. Если Вам хотелось бы разобраться, где ошибка или Вам необходимо это сделать, то приведите точный Makefile, который Вы используете. Чуток разъясните структуру проекта по Qt Creator - для примера, желательно, чтобы он был предельно простым: с наворотами уже позднее стоит разбираться. Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! Только если, у этого кого-то не будет похожей задачки! |
|
|
JustOneQuestion |
21.5.2015, 0:19
Сообщение
#15
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: 0 |
Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! Только если, у этого кого-то не будет похожей задачки! Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както ) Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности. А вот что касается так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой ) Только если, у этого кого-то не будет похожей задачки! Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! Только если, у этого кого-то не будет похожей задачки! Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както ) Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности. А вот что касается Только если, у этого кого-то не будет похожей задачки! так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой ) Так... я прошу прощение за странность такого поста.... я так и не понял КАК тут можно редактировать СВОЙ ПОСТ! ))) Админы,... кнопочку РЕДАКТИРОВАТЬ пожалуйста добавте... ииили скажите где она тут у вас .... ну и поправте если можно пост. ) |
|
|
Текстовая версия | Сейчас: 26.12.2024, 19:05 |