Ответ 1
Как работают листы свойств
Листы свойств - это простые списки свойств. Записи не предназначены для каждой конфигурации или для каждой платформы.
Если вы добавите лист свойств на верхний уровень проекта, он добавится ко всем комбинациям конфигурации/платформы под ним, как если бы вы индивидуально добавили этот файл свойств в каждую конфигурацию самостоятельно.
Таким образом, все свойства отображаются во всех вариантах конфигурации/платформы.
Это означает, что вы также можете делать такие вещи, как один лист для всех ваших x86-конфигураций и другой лист для всех ваших x64-конфигураций, например. для путей сборки. Таким образом, все остальные ваши свойства в вашем коде могут просто использовать $(MYLIB_INCLUDE)
, не беспокоясь о том, будет ли это 32- или 64-разрядная сборка.
Вы можете с пользой объединить таблицы конфигурации/платформы и глобальные свойства, также лист свойств может ссылаться далее на список. (Заказ значителен, и они, кажется, читаются снизу вверх в соответствии с пользовательским интерфейсом).
Вы можете проверить, каковы конечные значения свойств, перейдя на редактирование свойства на странице основных свойств проекта, а также вкладку "Макросы > ". Это полезно при отладке проблем с упорядочением с одним пользовательским макросом, ссылающимся на другой, с другого листа.
Пример использования с кодом
В качестве примера, который вы можете скачать с pg_sysdatetime
в github здесь, я создал три листа свойств:
-
pg_sysdatetime.props
- это мастер-лист, который пользователи могут редактировать для изменения путей. Он определяет макросыPGBASEDIR_x86
иPGBASEDIR_x64
с путями к 32-разрядным и 64-разрядным установкам PostgreSQL в системе. -
pg_sysdatetime_x86.props
- это простая оболочка, которая определяетPGBASEDIR
как$(PGBASEDIR_x86)
. -
pg_sysdatetime_x64.props
делает то же самое для$(PGBASEDIR_x64)
Я добавил pg_sysdatetime.props
на верхний уровень проекта, поэтому он применим ко всем комбинациям конфигурации/платформы.
Затем я добавил sysdatetime_x86.props
ко всем конфигурациям платформы x86 и sysdatetime_x64.props
ко всем конфигурациям платформы x64.
Редактор свойств выглядит так:
и я могу убедиться, что макросы правильно определены при редактировании свойства:
Теперь я могу ссылаться на каталог PostgreSQL libdir, include и т.д. из любого места моего проекта с помощью простых макросов, например:
$(PGBASEDIR)\lib
не заботясь о том, занимаюсь ли я 32-разрядной или 64-битной сборкой и т.д. Поэтому я могу просто отредактировать настройки для "всех конфигураций", "всех платформ" и знаю, что они будут работать на все, я не нужно индивидуально редактировать каждый.
Это почти похоже на использование Makefile с 1980 года;-)