crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Переносимость файлов проекта qmake между ОС
Алексей1153
  опции профиля:
сообщение 5.2.2011, 18:27
Сообщение #1


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

Группа: Участник
Сообщений: 2939
Регистрация: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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 тоже видны ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.4.2024, 6:46