Хорошо ли помещать информацию о версии в переменные среды для включения путей к сторонним библиотекам? - PullRequest
1 голос
/ 09 сентября 2011

Когда вы настраиваете проект для компиляции в C ++, будь то VS или make, каков наилучший способ настройки переменных среды, которые используются в путях включения для сторонних библиотек? Включаете ли вы номер версии в переменную? то есть THIRD_PARTY_LIB_3_1_1 = C: \ библиотеки \ ThirdParty \ 3.1.1

и затем включите $ (THIRD_PARTY_LIB_3_1_1) \ include в путь включения

или THIRD_PARTY_LIB = C: \ библиотеки \ ThirdParty \ 3.1.1 и затем включите $ (THIRD_PARTY_LIB) \ include в путь включения

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

Основная проблема, которую я вижу в отсутствии номеров версий в переменной среды, заключается в том, что она не является явной, и если у вас есть два проекта, которые используют разные версии, это становится кошмаром обслуживания, и воспроизведение сборки практически невозможно.

1 Ответ

2 голосов
/ 10 сентября 2011

Это зависит.

Вы должны подумать об этом с точки зрения того, как система сборки будет использовать эту информацию для изменения своего поведения.Это не будет действовать по-другому, называете ли вы это одно или другое, тогда это просто делает больше работы (и, возможно, путаницы) для себя.

Если в одну сборку нужно включить несколько версий одного и того же THIRD_PARTY_LIBRARY, вам придется различать.В противном случае, когда конкретный код вашего проекта указывает путь, он должен быть достаточно ясным.

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

Если кто-то изменил путь, а не имя переменной, будет ли путь или имя переменной правильным?Это глупая мысль, не правда ли?Когда кто-то еще не меняет имя переменной, а вы пытаетесь выяснить, почему что-то ломается, вы тоже об этом пожалеете.

Основная проблема, которую я вижу в отсутствии номеров версийпеременная окружения заключается в том, что она не является явной, и если у вас есть два проекта, использующих разные версии, это становится кошмаром обслуживания, и воспроизведение сборки практически невозможно.

Файлы сборки и сторонние библиотекидолжен быть в системе контроля версий.Ваша система сборки должна документировать все эти вещи при создании релизных сборок.Обычно вы хотите, чтобы ваша система сборки могла выполнить полную проверку базы кода, чтобы убедиться в правильности сборки.Как побочный эффект этого, он также должен знать номера ревизий.

Мой опыт показывает, что на переменные среды проблематично полагаться, и тем более они более специфичны.Много раз они вам нужны, поэтому я не могу и не скажу вам, что их неправильно использовать.Вы можете иметь только одну переменную окружения исходного пути верхнего уровня.Если ваша система сборки может использовать пути, основанные на этом, это будет только одно место, оно потерпит неудачу.Если у вас есть один для каждой библиотеки, вы увеличиваете количество точек отказа.

...