crossplatform.ru

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

Алексей1153
  опции профиля:
сообщение 5.2.2011, 18:27
Сообщение #1


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Уже несколько раз столкнулся с тем, что некоторые настройки проекта работают в винде, но требуют допиливания в линуксе (и наоборот)

Первый вопрос такой: теневая сборка в QtCreator. Под виндой указывается абсолютный путь, а если это не так, то путь отсчитывается от папки установки Qt.

А во как сделать так, чтобы универсально задавалась папка X, которая лежит на 1 шаг выше по дереву каталогов, чем файл *.pro?


Второй вопрос: профиль. Под виндой , к примеру, 4.7.0 (а "Qt в PATH" не определён), под линуксом приходится вручную выбирать "Qt в PATH". Как обобщить ?

Третий вопрос - кодировки. Вот в соседней теме озвучил, повторюсь, как вывернулся
Цитата
1) все файлы проекта - в кодировке UTF-8
2) кодировка среды по умолчанию - UTF-8
3) строки оборачиваю в QString::fromUtf8("русский текст")

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

Кстати, интересно, правильно ли я сделал, или оно "просто пока работает" ?


Сообщение отредактировал Алексей1153 - 5.2.2011, 18:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V   1 2 3 >  
Начать новую тему
Ответов (1 - 25)
maint
  опции профиля:
сообщение 5.2.2011, 18:54
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

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




Репутация:   2  


Цитата(Алексей1153 @ 5.2.2011, 23:27) *
Уже несколько раз столкнулся с тем, что некоторые настройки проекта работают в винде, но требуют допиливания в линуксе (и наоборот)

Первый вопрос такой: теневая сборка в QtCreator. Под виндой указывается абсолютный путь, а если это не так, то путь отсчитывается от папки установки Qt.

А во как сделать так, чтобы универсально задавалась папка X, которая лежит на 1 шаг выше по дереву каталогов, чем файл *.pro?


Второй вопрос: профиль. Под виндой , к примеру, 4.7.0 (а "Qt в PATH" не определён), под линуксом приходится вручную выбирать "Qt в PATH". Как обобщить ?

Третий вопрос - кодировки. Вот в соседней теме озвучил, повторюсь, как вывернулся
Цитата
1) все файлы проекта - в кодировке UTF-8
2) кодировка среды по умолчанию - UTF-8
3) строки оборачиваю в QString::fromUtf8("русский текст")

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

Кстати, интересно, правильно ли я сделал, или оно "просто пока работает" ?


на первый вопрос. В обоих системах можно указать одинаково
../имя_файла.cpp

например у меня
SOURCES = main.cpp \
    ../common/init.cpp \
    logfile.c

вопрос второй. Формализовать не получилось у меня. PATH - это от операционной системы. На новом месте укзывать для сборки обязятельно
вопрс третий. Сделано абсолютно правильно. Только я, еще (непомню откуда взял правило, то ли сам допер, то ли вычитал) укаываю в main.cpp
#ifdef _LINUX
    setlocale(LC_ALL, "ru_RU.UTF-8");
#endif
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
#ifdef _WIN32
    setlocale(LC_ALL, "Russian");
#endif

в проекте соотвественно
win32 { 
    DEFINES += _WIN32
}
unix { 
    DEFINES += _LINUX
}


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 18:58
Сообщение #3


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(maint @ 5.2.2011, 20:54) *
на первый вопрос. В обоих системах можно указать одинаково
../имя_файла.cpp

э... Вообще-то , вопрос не об этом. А о выходных файлах. Если там указать оператор шага наверх, то скомпилится просто напросто не в папке Qt, а на шаг выше (c:/2010.05/ у меня)


Цитата(maint @ 5.2.2011, 20:54) *
указываю в main.cpp


а вот надо ли ? :) Вопрос остался открытым


Цитата(maint @ 5.2.2011, 20:54) *
#ifdef _LINUX
#ifdef _WIN32

во, за дефайны спасибо, что напомнил, я и забыл про них совсем )) Пригодится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.2.2011, 18:59
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 5.2.2011, 20:27) *
Переносимость файлов проекта для QtCreator между ОС
Файлы проектов креатора в принципе не переносимы. Никогда не таскай их. переносимыми являются только файлы qmake (*.pro/*.pri)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 19:01
Сообщение #5


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(Litkevich Yuriy @ 5.2.2011, 20:59) *
переносимыми являются только файлы qmake (*.pro/*.pri)

так я про них и говорю. Ну и H+CPP+ресурсы. А какие ещё файлы проекта есть ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 5.2.2011, 19:19
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

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




Репутация:   2  


Цитата(Алексей1153 @ 5.2.2011, 23:58) *
Цитата(maint @ 5.2.2011, 20:54) *
на первый вопрос. В обоих системах можно указать одинаково
../имя_файла.cpp

э... Вообще-то , вопрос не об этом. А о выходных файлах. Если там указать оператор шага наверх, то скомпилится просто напросто не в папке Qt, а на шаг выше (c:/2010.05/ у меня)


Цитата(maint @ 5.2.2011, 20:54) *
указываю в main.cpp


а вот надо ли ? :) Вопрос остался открытым


Цитата(maint @ 5.2.2011, 20:54) *
#ifdef _LINUX
#ifdef _WIN32

во, за дефайны спасибо, что напомнил, я и забыл про них совсем )) Пригодится.

вообще файлики имя.pro.user тащить с собой не только между разными идеологически системами, но в просто на другую машину вредно для здоровья.В main.cрp указывать надо. Локаль определять может и не стоит (если не с базами работа). Но для вывода текста
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
я бы все же рекомендовал. Не пожалеешь при перетаскивании проекта. Была у меня плюха с этим. Вдруг при переносе из линуха в винду, кажется или наоборот, вдруг дурь началась в моей диагностике. Я убил 2 дня, пока дошло. И просрочил срок сдачи :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 19:27
Сообщение #7


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(maint @ 5.2.2011, 21:19) *
вообще файлики имя.pro.user тащить с собой не только между разными идеологически системами, но в просто на другую машину вредно для здоровья

там вроде ничего опасного не хранится. Специально заглянул сейчас

а XML - он как бы и в Африке не doc ))

Сообщение отредактировал Алексей1153 - 5.2.2011, 19:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 5.2.2011, 19:32
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

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




Репутация:   2  


Цитата(Алексей1153 @ 6.2.2011, 0:27) *
Цитата(maint @ 5.2.2011, 21:19) *
вообще файлики имя.pro.user тащить с собой не только между разными идеологически системами, но в просто на другую машину вредно для здоровья

там вроде ничего опасного не хранится. Специально заглянул сейчас

а XML - он как бы и в Африке не doc ))

например недавно здесь пробегала тема, почему дебагер не заводится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 5.2.2011, 20:49
Сообщение #9


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


maint, Не надо цитировать целыми сообщениями, получается очень громоздко и тяжело читать.

В первый вопроса так и не въехал. Напиши проще что делаешь, что в результате получаешь и что хотелось бы получить.
Я теневую сборку в своих проектах не использую. Предпочитаю сам указывать куда должны помещаться библиотеки, бинарники, файлы сборки и т.д.

ОС можно определить проще. Смотри определения Q_OS_* (Q_OS_LINUX, Q_OS_UNIX, Q_OS_WIN32, etc).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 20:55
Сообщение #10


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(igor_bogomolov @ 5.2.2011, 22:49) *
В первый вопроса так и не въехал

да вроде разобрались уже - вручную и придётся указывать :)

Цитата(igor_bogomolov @ 5.2.2011, 22:49) *
ОС можно определить проще. Смотри определения Q_OS_* (Q_OS_LINUX, Q_OS_UNIX, Q_OS_WIN32, etc).

эти определения в pro/pri тоже видны ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 5.2.2011, 21:04
Сообщение #11


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(Алексей1153 @ 5.2.2011, 20:55) *
эти определения в pro/pri тоже видны ?
Нет, это в коде. Просто излишне повторять уже имеющиеся определения. Если нужно в про файле определять ОС, делай как написал maint во втором сообщении
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 21:08
Сообщение #12


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


а, я не сразу увидел - там вроде пространства имён (это я про файл проекта)

win32
{
}

unix
{
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 5.2.2011, 21:15
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

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




Репутация:   2  


Цитата(igor_bogomolov @ 6.2.2011, 2:04) *
Просто излишне повторять уже имеющиеся определения. Если нужно в про файле определять ОС, делай как написал maint во втором сообщении

вот задница в том, что при кроссплатформенном программировании зачастую приходится использовать и соотвествующие библиотеки. Так вот, определения ОС в QT это изобретение именно QT. И хедеры сторонних кросплатформенных библиотек заточены именно на _WIN32 _LINUX. Исторически сложилось. Так что указывая эти имена я просто избегаю нагромождений и путанницы при условной компиляции
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 5.2.2011, 21:47
Сообщение #14


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

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




Репутация:   2  


фу, сам запутался, затрепался. В файле проекта указываешь (это по первому вопросу)
    
MOC_DIR = ../moc
OBJECTS_DIR = ../obj

нужные наименования каталогов http://qtdocs.narod.ru/4.1.0/doc/html/qmak...-reference.html

Сообщение отредактировал maint - 5.2.2011, 21:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 22:03
Сообщение #15


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


maint, ок, попробую
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 22:55
Сообщение #16


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


maint,

сделал так
MOC_DIR    =$$PWD/../temp
OBJECTS_DIR=$$PWD/../temp
DESTDIR    =$$PWD/../temp
RCC_DIR    =$$PWD/../temp

теперь попадает всё в одну папку, расположенную рядом с папкой проекта. Только нет различия для файлов дебага и релиза - это как задать ?

и ещё - можно ли путь $$PWD/../temp один раз задать, а не 4 раза ?

Сообщение отредактировал Алексей1153 - 5.2.2011, 22:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 5.2.2011, 23:30
Сообщение #17


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


TMP_DIR = $$PWD/../temp
CONFIG (debug, debug|release) {
    OBJECTS_DIR = $${TMP_DIR}/debug
}else{
    OBJECTS_DIR = $${TMP_DIR}/release
}

UI_DIR  = $${TMP_DIR}/uic
MOC_DIR = $${TMP_DIR}/moc
RCC_DIR = $${TMP_DIR}/rcc
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.2.2011, 23:39
Сообщение #18


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


CONFIG (debug, debug|release) {

а эта конструкция как работает ? Содержимое в скобках, вернее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 5.2.2011, 23:53
Сообщение #19


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


По моему из примера вполне понятно, как она работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2011, 0:03
Сообщение #20


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


да не совсем. Как выбирается условие ? Выход всегда в релизную папку попадает, неважно , что выбрали - дебаг или релиз

или это я устал уже. Попробую утром разобраться )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.2.2011, 7:50
Сообщение #21


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 5.2.2011, 21:01) *
А какие ещё файлы проекта есть ?
у креатора свой файл проекта (расширение *.pro.user). Так что не путай людей, пиши название темы точно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2011, 11:41
Сообщение #22


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Litkevich Yuriy, ок


заработало только в таком виде:
Цитата(igor_bogomolov @ 6.2.2011, 1:30) *
CONFIG (debug|release) {...}


поэтому так осталось и непонятным, почему у Игоря в скобках написано "debug, debug|release"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.2.2011, 12:28
Сообщение #23


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 6.2.2011, 13:41) *
почему у Игоря в скобках написано "debug, debug|release"
выбирается один элемент из списка
Список содержит элементы debug и release

а у тебя получается бессмысленная запись, всё равно, что ты её не писал

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2011, 13:12
Сообщение #24


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


факт остаётся фактом - только с моим вариантом заработало так, как надо. Без условия - тоже не так работает.

Хотя, ничего не утверждаю, попозже поэкспериментирую точно. Сейчас немного некогда, а компилируется каждый раз очень долго на моём калькуляторе :) А пока "работает и так", эхъ

Сообщение отредактировал Алексей1153 - 6.2.2011, 13:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 6.2.2011, 14:24
Сообщение #25


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Алексей1153, почему бы просто не посмотреть документацию http://www.doc.crossplatform.ru/qt/4.6.x/q...nce.html#config
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2011, 14:33
Сообщение #26


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

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


мдяя, достаточно мутная дока. С ходу не смог осилить (а про условное определение там вообще ровно один абзац с одним примером без особых объяснений)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 8:26