c++ - 在 visual studio 定义中停止环境路径扩展

标签 c++ visual-studio c++11

我正在使用自动生成 Visual Studio 项目文件的程序。在这些生成的项目中,我希望有一个指定配置文件路径的#define。这将允许我在必须更改路径时不更改代码。在此路径中,我需要能够使用诸如

之类的环境路径
%LOCALAPPDATA%\\\\Company\\\\Config.cfg.

此环境变量必须存在于运行时。在我的预处理器列表中,我有:

CONFIGURATION_PATH="%LOCALAPPDATA%\\\\Company\\\\Config.cfg".

不幸的是,在使用时它变成了:

C:\Users\Username\AppData\Local\\Company\\Config.cfg.

这意味着它使用扩展路径进行编译。如果新用户运行该程序,路径将是错误的。无论如何,我可以在预处理器运行时阻止 visual studio 扩展环境变量吗?

人们能想到这个问题的其他解决方案吗?

最佳答案

documentation 中找到,在msbuild中转义特殊字符的方法是%XX,其中XX是该字符的十六进制等价物。 (这有时称为“URL 编码”)。因此,为了按字面意义使用百分比字符,您必须将其编码为 %25。环境变量名称 %LOCALAPPDATA% 变为 %25LOCALAPPDATA%25

关于c++ - 在 visual studio 定义中停止环境路径扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619056/

相关文章:

sql-server - 数据库项目发布失败,因为部署脚本尝试删除并重新创建未修改的表

c++ - 连接一系列 std::arrays

c++ - 为什么成员函数尝试 block 处理程序中的 lambda(捕获 'this')不能访问 VC++ 2013 中的私有(private)数据成员?

c++ - 使用 reinterpret_cast 和 static_cast 模拟具有多态参数的模板中的协变和逆变?

c++ - 如何在 Windows 中(或通过 Qt)编写一个简单的常驻程序

python - 使用颜色直方图使用 OpenCV 训练 SVM

c++ - 在 C++ 中传递对象所有权

javascript - Visual Studio -> Shared TypeScript Library -> TS6059 文件 '' 不在 'rootDir' '' 下。 'rootDir' 应该包含所有源文件

c++ - visual studio 2013如何链接opencv等dll文件输出exe

C++ 连接许多 std::vectors 并删除重复项