如何设置Visual Studio CMake项目运行时环境变量?

问题描述 投票:0回答:4

Visual Studio 2022 CMake 项目

我在vs2022中构建了一个qt cmake项目,一切正常,但是当最后一步运行exe时,它说缺少dll文件的错误。我知道这是dll文件目录的问题。我可以将它添加到系统环境路径,或者将 dll 复制到 exe 文件目录,但我猜想存在 not mucks system env 的其他方法。我注意到VS传统项目可以在属性中设置调试器环境,它设置本地环境变量,但我找不到在VS2022中的新支持CMake项目中设置它的方法。

IDE QtCreator 还提供了一种类似的方法,仅为运行 exe 文件的项目设置 env var,因此任何在 VS 中设置它的方法(如传统的 sln 项目),我搜索并发现一些配置 json 文件可能会有所帮助,但是我找不到精确的设置。

如上所述,我想存在一些方法可以设置exe运行时环境变量以在VS CMake项目中查找dll文件,任何人都可以给我任何提示,任何有用的建议将不胜感激!

c++ visual-studio cmake dll visual-studio-2022
4个回答
2
投票

终于找到了在Visual Studio中无解决方案的cmake项目的方法,

  1. 通过
    this
    查找 launch.vs.json
  2. 文件
  3. 将自定义环境变量路径添加到json文件
  4. configurations
    键中将以下内容添加到项目中:
 "env": {
    "PATH": "<dll-file-path>"
 }

它对我来说效果很好,希望这可以帮助你。


0
投票

您可以将以下属性添加到包含可执行目标的

CMakeLists.txt
文件中:

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT <your_executable_target_name>)
set_property(TARGET <your_executable_target_name> PROPERTY VS_DEBUGGER_ENVIRONMENT "PATH=${QTDIR}/bin")

0
投票

如果您需要独立于构建系统的解决方案,可以选择添加仅启动程序的自定义目标:

帮助脚本(run_program.cmake)

set(ENV{PATH} "${PATH}")
execute_process(COMMAND "${PROGRAM}")

实际项目

add_executable(MyProgram ...)

add_custom_target(RunMyProgram COMMAND ${CMAKE_COMMAND} -D "PROGRAM=$<TARGET_FILE:MyProgram>" -D "PATH=${QT_BINARY_DIR};$ENV{PATH}" -P ${CMAKE_CURRENT_SOURCE_DIR}/run_program.cmake)

这允许您使用例如

cmake --build build_dir --target RunMyProgram --config Release

构建后使用修改后的

PATH
环境变量运行程序。


另一种选择是使用

add_test
+ ctest,在修改器环境下运行程序,但这很容易导致真实的测试用例无法使用。


0
投票

在 cmakesetting.json 文件中,在配置下添加键值:{"environments":"qt path;$penv{PATH}"},如下所示:

// cmakestting.json

{
    "configurations":[
     {
         "name": "x64-Debug",
         "generator": "Ninja",
         "configurationType": "Debug",
         "inheritEnvironments": [ "msvc_x64_x64" ],
         ...
         // run time environments
         "environments": [ { "PATH": "C:\\local\\Qt\\Qt6.5.3\\bin;$penv{PATH}" } ] 
         ...
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.