2008-09-23 3 views
2

I код C++ с использованием MS Dev Studio, и я работаю дома два дня в неделю. Я использую CVS, чтобы синхронизировать мои источники между двумя компьютерами, но есть разница между средами, в которых находятся компьютеры.Условная компиляция для работы дома

Может кто-нибудь предложить способ, который я могу условно изменить константы в моем коде, в зависимости от того, компилирую ли я свой дом или нет?

То, что я после того, как способ определения символа, давайте назовем его _ATHOME, автоматически, так что я могу сделать это:

#ifdef _ATHOME 
# define TEST_FILES "E:\\Test" 
# define TEST_SERVER "192.168.0.1" 
#else 
# define TEST_FILE "Z:\\Project\\Blah\\Test" 
# define TEST_SERVER "212.45.68.43" 
#endif 

NB: Это для разработки и отладки, конечно, я бы никогда не выпускайте программное обеспечение с такими жесткими закодированными константами.

ответ

6

На вашей домашней и рабочей машине задайте переменную окружения LOCATION, которая является либо «1» для дома, либо «2» для работы.

Затем в опциях препроцессора добавьте препроцессор define/DLOCATION = $ (LOCATION). Это будет оцениваться либо строкой «home», либо «work», заданной в переменной окружения.

Затем в коде:

#if LOCATION==1 
    // home 
#else 
    // work 
#endif 
+0

Блестящий, это именно то, что я искал. Вероятно, я могу использовать подобный метод и для Linux. – 2008-09-23 04:45:33

2

Вы можете установить preproccesor переменных в Свойства-> C++ -> препроцессор
в визуальном студийных вы можете использовать $ (enviromentvariable)

+0

Извините, хотя ваш ответ по сути тот же, 1800 ИНФОРМАЦИЯ, ответ сформулирован лучше и включает пример, поэтому я собираюсь принять его. – 2008-09-23 04:50:52

1

Я обычно использует конфигурационные файлы, то просто создать символическую ссылку на соответствующий конфигурации.

3

Если единственное различие между работой и домом, где тестовые файлы расположены ... то (ИМХО) вы не должны загрязнять ваши файлы сборки с кучей статические пути & IP.

Для примера, который вы показали, я бы просто сопоставлял диски как на работе, так и на дому. То есть на работе наведите карту T: что указывает на \\ 212.45.68.43 \ Project \ Blah \ Test, на главной карте диска T: это указывает на \\ 192.168.0.1 \ Test.

Затем ваш процесс сборки использует путь «T: \» для обозначения того, где находятся тесты.

Конечно, если вам нужно изменить что-то более резкое, настройки переменных окружения, вероятно, лучший способ пойти.