Как получить доступ к макросу $(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)