Как получить доступ к макросу $(SolutionDir) из кода C++

Как получить доступ к макросу $(SolutionDir) из кода C++. Просто я хочу получить путь к каталогу решения в виде строки. Так что я могу настроить свой проект на любом компьютере и получить путь к каталогу sln соответственно.

2 ответа

Решение

Я решил это. Здесь использование $(SolutionDir) дает путь к каталогу решения. Но есть проблема, когда он принимает в качестве строки, потому что оператор return $(SolutionDir) содержит путь, включая slashes () без escape-символа. Пример: C:\TestApp\ Но для использования в качестве строки это должен быть C: \ TestApp \ Возможно, его можно использовать внутренне при настройке свойств.

У меня есть та же самая проблема некоторое время назад (я запишу голосование, но здесь нет никакого реального ответа).

Я также определил макрос Preprocesor, и с помощью C++ 11 можно легко избежать проблемы с символами экранирования. Для этого перейдите в

Свойства → Свойства конфигурации → C/C++ → Препроцессор

Есть поле PreprocessorDefinitions, поэтому вам нужно добавить туда:

SOLUTION_DIR=R"($(SolutionDir))"

Для объяснения R"()" означает строковый литерал C++, поэтому с escape-символами проблем не возникнет (они доступны с C++11).

Из моего сценария использования это прекрасно работает в Visual Studio 2015 и 2017 (также должно работать в 2013 и 2012 годах. В 2010 году и ранее не было поддержки Raw String)

Другие вопросы по тегам