Макросы для команд и свойств сборки в Visual Studio 11 - PullRequest
5 голосов
/ 30 сентября 2011

Сначала вопрос из трех частей:

  1. Полностью ли реализованы макросы времени сборки в Visual Studio 11?
  2. Как я могу редактировать и определять их в IDE?
  3. Как я могу позволить макросам сохранять свое значение во время сеанса отладки?

Обратите внимание, что яЯ имею в виду макросы времени сборки , такие как $(ProjectDir), а не макросы IDE, используемые для записи серии нажатий клавиш - они убрали их , но я могу жить безих.Я определял свои собственные макросы времени сборки через страницы свойств в Visual Studio 10. Например, я мог бы создать макрос для определения места установки Boost на моем локальном компьютере с именем $(BoostDir) в сборках x64 через View> Property Manager> Microsoft.Cpp.x64.user :

macro definitions in VS10

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

enter image description here

Пытаясь скомпилировать и запустить мои проекты VS10 в Visual Studio 11 Developer Preview, я столкнулся с парой проблем, связанных с этими макросами.

Сначала в VS11не существует интерфейса для определения этих пользовательских макросов.Там, где они были в VS10, в VS11 теперь просто ничего нет:

enter image description here

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

Во-вторых, хотя макросы, кажется, существуют во время процесса сборки, они, кажется, не существуютво время сеанса отладки.Макросы, которые я использовал для разрешения каталогов, в которых существуют определенные библиотеки DLL в VS10, теперь не разрешают эти каталоги в VS11, и я получаю ошибки времени выполнения:

enter image description here

Каталог, в котором находится этот каталог.Библиотека DLL определена здесь в VS10 и VS11:

enter image description here

... но мои макросы, кажется, ничего не значат во время сеанса отладки.

Как я могу получить все связанные с макросами функции, от которых я зависел в VS10, обратно в VS11?

Ответы [ 2 ]

1 голос
/ 20 мая 2012

Если вы еще не выяснили, как это сделать, вам нужно использовать собственные листы свойств.

Создайте новый лист свойств и используйте раздел Общие свойства> Макросы пользователя.

Например, у меня есть макрос с именем BOOST_VER в листе свойств с именем IncludeBoost.props, в котором я все установил.

User Macros
Name       Value
BOOST_VER  1.49.0

C/C++ > General > Additional Include Directories >
"$(environment variable)\3rdParty\Boost_$(BOOST_VER)\Boost";%(AdditionalIncludeDirectories)

C/C++ > Preprocessor > Preprocessor Definitions >
BOOST_ALL_DYN_LINK;%(PreprocessorDefinitions)

Linker > General
$(env var)\3rdParty\Boost_$(BOOST_VER)\Boost\lib\$(Platform);%(AdditionalLibraryDirectories)

Обратите внимание, что также выбрана подходящая платформа (Win32 или x64).

Кстати, Диспетчер свойств поддерживает Ctrl + щелчок для выбора нескольких элементов.

HTH.

0 голосов
/ 01 марта 2012

Мой файл Microsoft.Cpp.x64.user.props, который, я думаю, является тем, что вы отредактировали, находится в моем% blah% \ AppData \ Local \ Microsoft \ MSBuild \ v4.0. Я предполагаю, что VS11 не использует это для настройки сборки. Что вам действительно нужно сделать, так это создать свой собственный список свойств для использования с вашими проектами.

...