Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

с++ почему студия меняет об\ектники?

297  
anly коренной житель11.07.17 23:46
anly
11.07.17 23:46 

Исходники не меняются. Билдим проэкт - об\ектники меняются!

Можно ли заставить Визуал студию генерить один и тот же код (т.е. чтобы обж файлы генерились бинарно одинаковые при неизменных исходниках?


Почему спрашиваю.

Некой удаленной фирме, которая на нас работает, мы не даем исходников некоторых файлов (блокируем доступ в SVN), а даем лишь об\ектники, которые они линкуют с остальным проэктом.

Посему хотелось бы эти об\ектники положить прямо в SVN рэпозиторию. Пусть они у нас каждый раз билдятся, а коммитить мы их будем только в том случае ежели они реально (а не по прихоти ВисуалСнудии) поменялись.

Но ВизуалСтудия меняет их с каждым билдом.

Проклят нарушающий межи ближнего своего (Втор.27:17)
#1 
vermieter-bs прохожий12.07.17 09:51
NEW 12.07.17 09:51 
в ответ anly 11.07.17 23:46

так сравните тупым диффом. и увидите в чем различия.

подозреваю какие-то данные о версии создания. сам код не будет меняться.

также релокэйшн информация может измениться если компилируете с другими системными библиотеками.

#2 
  moose свой человек12.07.17 13:13
NEW 12.07.17 13:13 
в ответ anly 11.07.17 23:46

Common Object File Format содержит timestamp of creation. Если студио заново построила объектный файл, то он будет отличаться как минимум этим значением.

#3 
Murr патриот12.07.17 15:28
Murr
NEW 12.07.17 15:28 
в ответ anly 11.07.17 23:46

Можно ли заставить Визуал студию генерить один и тот же код (т.е. чтобы обж файлы генерились бинарно одинаковые при неизменных исходниках?

-----

Вопрос не правильно поставлен.

Правильный вопрос - Как заставить Студию не ре-компилировать исходники если не было изменений.


Ответов два:


Провильный - Найти в *.тагетсах часть отвечающую за построение списка и поменять так как надо - чтобы неизменные файлы не перекомпилировались.


Частичный - Засунь проект с проблемными файлами в "Нев Солутион Фолдер" - Студия будет его компилировать только при полном ребуилде.


П.С. Собери объектники в библиотеку (ЛИБ, не ДЛЛ) и коммить ее. Туда можно добавить "левую" инфу...

#4 
anly коренной житель12.07.17 18:44
anly
NEW 12.07.17 18:44 
в ответ Murr 12.07.17 15:28, Последний раз изменено 12.07.17 18:45 (anly)
Найти в *.тагетсах
а что это за файл? Я искал эксплорером *.*tag* , но ни одного не нашел (разве что *.metagen какие-то, но их мало, даже не для каждого проекта)
Частичный - Засунь проект с проблемными файлами в "Нев Солутион Фолдер" - Студия будет его компилировать только при полном ребуилде.
тут чего-то не то. Студия вообще не компилирует спп файлы которые не в проэкте (а в НьюСолюшинФолдере).
Собери объектники в библиотеку (ЛИБ, не ДЛЛ) и коммить ее.
А толку? Думаешь что lib будет всегда одинакова после каждого билда неизмененных исходников?


ЗЫ. НП.

Там еще есть одна заморочка.

Эти "секретные" файлы не независимые, а используют какие-то интерфейсы, которые имплементированны где-то в другом месте (может даже в другом проекте).

Что получилось:

- я поменял один из интерфейсов (добавил функцию, не в конец, а рядом с другими функциями по-смыслу)

- таблица виртуальных методов сместилась, понятно

- а значит ВСЕ пользователи интерфейса должны быть перекомпилированны

- как результат у той фирмы, что имеет лишь об\ектники - вылет

Так что вот думаю как избежать подобного в будущем?...

Проклят нарушающий межи ближнего своего (Втор.27:17)
#5 
Murr патриот12.07.17 20:14
Murr
NEW 12.07.17 20:14 
в ответ anly 12.07.17 18:44

а что это за файл?

-----

*.targets

- аналог маке-файла описывающий процесс построения проекта.


не компилирует спп файлы которые не в проэкте

-----

Хммм... пора учится читать... бо, об спп Я ничего не писал...



lib будет всегда

-----

с либом проще.



Так что вот думаю как избежать подобного в будущем?...

-----

Либу обновить... любым доступным способом... хоть по ФТП в таргетсе...

Отдельные файлы - много писанины, одну либу - без проблем.

#6 
anly коренной житель12.07.17 21:38
anly
NEW 12.07.17 21:38 
в ответ Murr 12.07.17 20:14
*.targets - аналог маке-файла описывающий процесс построения проекта.
таких тоже нет
Хммм... пора учится читать... бо, об спп Я ничего не писал...
пора. хотя бы название темыулыб
Отдельные файлы - много писанины, одну либу - без проблем.
если руками и своим вниманием: тоже самое. тут задача чтобы автоматизировать хотя бы факт что надо обновить
Проклят нарушающий межи ближнего своего (Втор.27:17)
#7 
Murr патриот12.07.17 22:31
Murr
NEW 12.07.17 22:31 
в ответ anly 12.07.17 21:38
таких тоже нет

-----

У меня на диске С:\ 729 штук...


пора.

-----

Ну так ЧИТАЙ. Не думай, а ЧИТАЙ.


тут задача чтобы автоматизировать

-----

Угу... по-хорошему надо писать новую задачу для Мэйка и добавлять в используемый таргетс.

Могу сказать, что там не сложно - Я смотрел примеры, но сам не делал.


Да, вспомнил. Хотя и не по плюсам, а по шарпу, но похожее...

Когда лепятся плугины там получается либо выделенная либа для интерфейсов, либо циклическая ссылка.

Решается лепкой ДЛЛки и подсовыванием оной, а не проекта, в проект плугиноv.


#8 
anly коренной житель12.07.17 23:17
anly
NEW 12.07.17 23:17 
в ответ Murr 12.07.17 22:31
Ну так ЧИТАЙ. Не думай, а ЧИТАЙ.
что читать, о чем не думать? улыб
Проклят нарушающий межи ближнего своего (Втор.27:17)
#9 
Murr патриот12.07.17 23:51
Murr
NEW 12.07.17 23:51 
в ответ anly 12.07.17 23:17

что читать

-----

#4, вторая строка снизу.

#10