如何从 C++ 代码访问 $(SolutionDir) 宏

Zar*_*rco 5 macros visual-c++

如何从 C++ 代码访问 $(SolutionDir) 宏。只是我想将解决方案目录路径作为字符串获取。这样我就可以在任何计算机上设置我的项目并相应地获取 sln 目录路径。

wdu*_*zik 7

前段时间我遇到了同样的问题(我会记下投票,但这里没有真正的答案)。

我所做的也是定义预处理器宏,使用 c++11 可以轻松解决转义字符的问题。要做到这一点,请进入

特性 ?配置属性?C/C++ ? 预处理器

有字段 PreprocessorDefinitions 所以你需要在那里添加:

SOLUTION_DIR=R"($(SolutionDir))"

解释一下 R"()" 代表c++ 字符串文字,所以转义字符不会有问题(它们从 C++11 开始可用)。

从我的用例来看,这在 Visual Studio 2015 和 2017 中完美运行(也应该在 2013 和 2012 年工作。在 2010 年和之前不支持原始字符串)


Zar*_*rco 1

我解决了这个问题。这里使用 $(SolutionDir) 给出解决方案目录路径。但是当它作为字符串时会出现问题,因为 $(SolutionDir) 的 return 语句包含包含斜杠 () 的路径,没有转义字符。例如:C:\TestApp\ 但要用作字符串,它应该是 C:\TestApp\ 也许它可以在设置属性时在内部使用。