crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QtCreator vs CMD.exe, Разница в работе
AD
  опции профиля:
сообщение 14.5.2015, 0:36
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(JustOneQuestion @ 13.5.2015, 12:53) *
Теперь вопрос. А почему оно так? )
Где написано что все файлы проекта должны быть одного типа?...Почему 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  


Извиняюсь, что пропал.
Цитата(JustOneQuestion @ 13.5.2015, 13:53) *
Где написано что все файлы проекта должны быть одного типа?...Почему g++ умеет работать с разными типамиа QtCreator нет?
Собственно поэтому я и хотел, чтобы в Makefile была найдена результирующая строка, чтобы увидеть какие опции скармливаются компилятору.

Цитата(JustOneQuestion @ 11.5.2015, 16:41) *
Я не понимаю что нужно искать. Поясните пожалуйста.Но строку типа "g++ ......" я не видел ни в одном из этих файлов.
строки типа g++ ... не найдёшь, т.к. компилятор присваивается переменной, и далее она используется:
CC            = gcc
CXX           = g++

т.е искать нужно:
$(CXX) ...
или
$(CC) ...

qmake генерит Makefile на основе правил указанных для конкретного компилятора в папке %QTDIR%/mkspecs/<компилятор>
Для MinGW это обычно папка %QTDIR%/mkspecs/win32-g++
посмотри там файл qmake.conf
для qmake существуют переменные управляющие генерацией Makefile ты увидишь их в qmake.conf

А вообще для успешной сборки смешанного Си/С++ проекта, нужно в заголовочниках указывать компилятору как декорировать имена:
extern "C" {...}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(JustOneQuestion @ 20.5.2015, 18:11) *
Так, если я правильно понял, то верятно разница между С и С++ вот в этих строках.
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 - флаги С, соответственно.

Цитата(JustOneQuestion @ 20.5.2015, 18:11) *
Там конечно ещё много чего. Но если четсно, то не сочтите за ленивость, но мне важно чтобы дейвас заработал и я код мог для НЕГО написать... а вот разбираться во всех параметрах всёже немного не моя область. Пока что проблем с проектом у меня нет, и я пожалуй до следущих проблем :) отложу свой интузиазм копания в настройках Qt.
Однако, если есть вопросы, касательно моего кода.. всмысле ТАКОГО кода, который работает в командной строке и QtCreator по разному, то вы спрашивайте, предлагайте что хотите проверить и какие стоят где настройки. Может это кому-то окажется полезным. Буду рад.

Вот гадом буду, если ошибусь во мнении, но, на мой взгляд, оно будет у всех отвечающих форумчан! ;) Сам по себе код никому из форумчан лично нафиг не нужен. Если Вам хотелось бы разобраться, где ошибка или Вам необходимо это сделать, то приведите точный Makefile, который Вы используете. Чуток разъясните структуру проекта по Qt Creator - для примера, желательно, чтобы он был предельно простым: с наворотами уже позднее стоит разбираться. Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! ;) Только если, у этого кого-то не будет похожей задачки! ;) :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JustOneQuestion
  опции профиля:
сообщение 21.5.2015, 0:19
Сообщение #15


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 7.5.2015
Пользователь №: 4379

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(AD @ 21.5.2015, 0:37) *
Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! ;) Только если, у этого кого-то не будет похожей задачки! ;) :)

Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както )
Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности.

А вот что касается
Цитата(AD @ 21.5.2015, 0:37) *
так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой )
Только если, у этого кого-то не будет похожей задачки!



Цитата(JustOneQuestion @ 21.5.2015, 1:16) *
Цитата(AD @ 21.5.2015, 0:37) *
Если же Вам это не нужно, то маловероятно, что кому-то будет интересно разбираться в Ваших ошибках! ;) Только если, у этого кого-то не будет похожей задачки! ;) :)

Вот то-то и оно что код не я писал, и рекомендации к использыванию тоже. ... Но учитывая, что всё же решение использовать QtCreator принадлежало мне и не упоминалось в рекомендация от разработчиков... то вопрос чьи ошибки не самый тривиальный ). Но не в этом суть. Главное то, что мы с коллегами не уверены в том, что можем(что это хотябы порядочно) выкладывать код примеров и упоминать разработчика и производителя этого устройства и софта. Я собственно по этому старался менять имена файлов, ибо они уж очень "именные", ну и как следствие в мэйкфайлах их очень много. Заменить в них все названия... честно говоря, не уверен что можно без ошибок... их там ну очень много. И ладно бы, если б была бы чёткая уверенность что ошибки и проблемы софта и девайса точно производителя а не наши - написали бы уж, не стесняясь. Но учитывая отуствие должно опыта в Qt для такого утверждения у нас нет, мы решили что лучше этого не делать. Ибо можно говорить что это разработчики кривые,... а окажется что это не они а наши руки ))) Не красиво както )
Так что вы уж извините пожалуйста, дело не в том что мы боимся что кто-то сопрёт наш гениальный код состоящий из пары for'ов ) а чисто из за того, что бы не возникло неверного мнения о производители. Девайсина конечно с нереальными и уникальными параметрами.... но и с кучей правил в использовании и особенностями, которые могут быть воприняты как баги, при не слишком внимательном изучении. Да и просто отпугнуть сложностью. ... Не, конечно это не наше дело и никаких законов мы однозначно не нарушим. Просто вопрос порядочности.

А вот что касается
Цитата(AD @ 21.5.2015, 0:37) *
Только если, у этого кого-то не будет похожей задачки!


так именно про это я и хотел сказать в прошлом посте. Что если нужно что-то проверить на ЭТОМ коде, то я попробовать могу. ) Вдруг поможет кому-то с подобной проблемой )


Так... я прошу прощение за странность такого поста.... я так и не понял КАК тут можно редактировать СВОЙ ПОСТ! ))) Админы,... кнопочку РЕДАКТИРОВАТЬ пожалуйста добавте... ииили скажите где она тут у вас .... ну и поправте если можно пост. )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.6.2024, 15:30