【问题标题】:Set debug/run environment variable in Visual Studio 2017 C++ project?在 Visual Studio 2017 C++ 项目中设置调试/运行环境变量?
【发布时间】:2019-06-19 10:20:19
【问题描述】:

我正在尝试在 Visual Studio 中为我的项目设置自动运行/调试环境变量。 我的意思是,是否有任何 CMake 或 C++ 代码行不需要手动执行此操作?

Here 是如何手动操作的说明(我想避免的)。

Here 关于如何用 Cmake 来做这件事还有一个未解决的问题(似乎不可能)。

我还尝试了setenv()putenv() 以不同的方式使用,但它不起作用,因为主函数甚至直到该行代码才运行,然后出现错误消息:“Some.dll找不到”,程序停止。

【问题讨论】:

标签: c++ visual-studio environment-variables


【解决方案1】:

如果您的 dll 是您打算使用的,this answer 详细说明如何快速确保在运行时找到它(将 DLL 与可执行文件放在一起)

如果“自动”是指在代码中,您可以使用 _putenv 在代码中设置环境变量,如 this answer 中所述,类似于您所描述的。

ostringstream classSize;
classSize << "classSize=" << howManyInClass;
_putenv(classSize.str().c_str());

【讨论】:

  • 实际上将 DLL 与可执行文件放在一起工作正常,但我想在构建我的项目之前设置环境变量(特别是 PATH 变量),即在创建可执行文件之前。我想,也许可以通过CMake.txt文件的配置来完成,但我还是不知道怎么做。
  • Re: [stackoverflow.com/questions/7584602](this 问题),您可能需要在调用 cmake 之前设置路径 var,而不是从其中设置。除非您使用 LoadLibrary 手动加载 dll,否则您将受限于自动搜索 dll 的位置(例如,如果它们位于子目录中),请参阅 [stackoverflow.com/a/35311436/7708798](this 答案)了解更多信息。
【解决方案2】:

我找到的解决方案是基于this answer

解决步骤:

  1. CMakeLists.txt 文件旁边创建一个UserTemplate.vcxproj.user 文件,其内容如下:
<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
        <LocalDebuggerEnvironment>PATH=..\Your\Path\to\Binaries;%PATH%".</LocalDebuggerEnvironment>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
      </PropertyGroup>
    </Project>

..\Your\Path\to\Binaries 是二进制文件的相对路径 文件(.. 开头的两点是可选的,如果您 想在相对目录路径上去,你可能要使用 他们)。

  1. CMakeLists.txt 文件中添加下一行代码。
    # Configure the template file
    SET(USER_FILE main.vcxproj.user)
    SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE})
    CONFIGURE_FILE(UserTemplate.vcxproj.user ${USER_FILE} @ONLY)

ProjectName 是您要在其中定义 PATH 变量的 VS 项目的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多