crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Правильный перенос кода между платформами
Гость_HaySayCheese_*
сообщение 7.9.2010, 16:38
Сообщение #1





Гости








    


Здравствуйте.

Я работаю с Qt на Linux-е. Иногда пишу программки, но их чаще всего нужно использовать на виндосе. Из-за чего я всегда придерживаю вирт. машину с виндосом. Но вот переносить код с одной платформы в другую по несколько раз, компилировать там и там, очень напряжно. Мало того, все мои исходники в utf8 (написаны на линукс), на виндосе использую Qt Creator, он вроде как читает эти исходники, но почему-то все символьные константы при переносе кода принимают совсем другие значения. Это мне жутко мешает. Поэтому хочу задать господам профессионалам несколько вопросов:

1. Как лучше всего организовать разработку именно кроссплатформенного софта. Я понимаю, что без обеих ОС не обойтись, но может подскажите какой нибудь хороший способ организовать их взаимодействие.

2. Как лучше всего писать и сохранять исходники с оглядкой на туже кроссплатформенность? Имеется ввиду кодировка, или может есть и другие нюансы, которых я пока не встречал.

3. И еще вопрос: на линуксе я использую ссылки, так как считаю это "гениальным изобретением" в лине. НТФС с этими ссылками не дружит, и соответственно, при переносе каталогов с исходниками связь нарушается и мне каждый раз приходиться сбрасывать все исходники в общую папку, чтоб не было путаницы с путями к хедерам, изменять пути к хедерам в исходниках, и только после этого - компилировать (Если этого не сделать, компилятор ругается на отсутствие файлов, хотя физически на диске они присутствуют. Вирт. машина даже имитирует эти самые ссылки, создавая соответствующие каталоги и файлы, но компилятор все-равно говорит, что их нету. Почему так - не знаю.)

4. И последнее, как поступить с символьными константами? Переписывать весь код каждый раз не хочется, а иначе - программа не работает.

Заранее спасибо. Жду ответов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.9.2010, 16:54
Сообщение #2


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

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

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




Репутация:   94  


Цитата(Гость_HaySayCheese_* @ 7.9.2010, 20:38) *
Qt Creator, он вроде как читает эти исходники, но почему-то все символьные константы при переносе кода принимают совсем другие значения.
креатор не умеет определять кодировку. В настройках проекта "редактор" нужно указать UTF-8

1) можно покопать в сторону кросскомпиляции (ищи по форуму, обсуждалось)


2) кодировку лучше ставить UTF-8 и использовать для строковых констант trUtf8()

3) Обычно при копировании с Линуксовой ФС, на виндовозную, файловый менеджер спрашивает "разрешать ссылки?"/" resolve symlink?". Скажи да
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_HaySayCheese_*
сообщение 7.9.2010, 17:04
Сообщение #3





Гости








    


Цитата(Litkevich Yuriy @ 7.9.2010, 16:53) *
кодировку лучше ставить UTF-8 и использовать для строковых констант trUtf8()


За это - спасибо. Не знал про trUtf8(). Но думаю что это не поможет. Дело в том, что я когда с лини на виндос переношу исходники то они каким-то чудом преобразуются. Я выбираю в Creator-е кодировку utf8, после чего он нормально читает исходники (видны русские комменты, и т.д.) но эти самые константы преобразуются
в что-то совсем непонятное. Например: если в коде встречается "н/5", то на винде это будет выглядеть "PS/5". Я даже не имею предположения, почему так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.9.2010, 17:07
Сообщение #4


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

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

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




Репутация:   94  


Цитата(Гость_HaySayCheese_* @ 7.9.2010, 21:04) *
то они каким-то чудом преобразуются.
я в чудеса не верю
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 7.9.2010, 20:45
Сообщение #5


Активный участник
***

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

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




Репутация:   7  


2 Гость_HaySayCheese_*

Цитата
Я выбираю в Creator-е кодировку utf8, после чего он нормально читает исходники (видны русские комменты, и т.д.) но эти самые константы преобразуются
в что-то совсем непонятное. Например: если в коде встречается "н/5", то на винде это будет выглядеть "PS/5". Я даже не имею предположения, почему так.


Это извечный геммор креатора. Есть такой косяк. Файл автоматом перекодируется/пересохраняется в виндовом креаторе в виндовой кодировке cp1251 и потом если этот проект компилить под линухом - то компилятор посыпет ошибками. В общем, нужно постоянно в креаторе перед тем как открыть какой-то модуль *.h или *.cpp тыкать в настройки типа "открыть в Utf", иногда когда забудешь это сделать - то все, пиши приплыли. :)
Приходится с помощью notepad++ пересохранять испорченный исходник обратно в Utf без BOM.
Я долго мучался с этим, матюгался...
Но потом решил просто НЕ использовать в исходниках ни кириллических констант ни комментариев .. ничего вообще! И проблема решилась сама собой.

Чего и вам советую сделать. :)

Сообщение отредактировал kuzulis - 7.9.2010, 20:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_HaySayCheese_*
сообщение 7.9.2010, 22:00
Сообщение #6





Гости








    


Цитата(kuzulis @ 7.9.2010, 20:45) *
Но потом решил просто НЕ использовать в исходниках ни кириллических констант ни комментариев .. ничего вообще! И проблема решилась сама собой.
Чего и вам советую сделать. :)


А если так, то где Вы сохраняете хоть константы? Да и без комментариев это как-то не по людски, что ли :) Даже по отношению к самому себе... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 7.9.2010, 22:40
Сообщение #7


Активный участник
***

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

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




Репутация:   7  


Цитата
А если так, то где Вы сохраняете хоть константы? Да и без комментариев это как-то не по людски, что ли :) Даже по отношению к самому себе... :)

1. У мну нету кирилических констант, все символьные константы - только латиница.
2. Комментарии в основном тексте где реализованы методы и т.п. на английском. Те комментарии что на русском вынесены в отдельные файлы типа *.dox которые креатором не обрабатываются. Поэтому я могу комментировать не боясь ничего. Комментарии на английском и русском у меня - это документация в стиле Doxygen. Так что у меня проблем нету с этим уже. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 8.9.2010, 7:46
Сообщение #8


Старейший участник
****

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

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




Репутация:   9  


Вы просто не умеете пользоваться креатором. При работе на разных платформах надо:
1. Убедиться что везде используется одинаковая кодировка (устанавливается в настройках проекта)
2. Убедиться что при переносе на другие платформы не тянутся платформозависимые файлы (для переноса файлов исходников я использую git, а чтобы платформозависимые файлы не мешались, использую теневую сборку, с версии 2.0.0 креатор ее поддерживает)

P.S. Креатор сам умеет перекодировать любой файл в любую кодировку, никаких сторонних программ использовать не надо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 8.9.2010, 8:11
Сообщение #9


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

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

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




Репутация:   34  


а что за "теневая сборка" - несколько раз уже вижу эти слова, а шо за зверь такой ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.9.2010, 9:20
Сообщение #10


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

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

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




Репутация:   94  


Цитата(Алексей1153 @ 8.9.2010, 12:11) *
а что за "теневая сборка"
сборка в каталоге отличном от исходников. Например:
path\to\myproject\source - тут исходники со всеми подкаталогами (может находится под контролем версий)
path\to\myproject\build - тут собираем, т.е. сдесь лежат make-файлы и всякие промежуточные файлы.

Как реализовать?
переходим в каталог path\to\myproject\build и командуем
qmake path\to\myproject\source\my.pro

создадутся make-файлы, затем здесь же
make debug
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.1.2021, 2:40