如何使用CMake和Visual Studio设置路径环境变量来运行测试 [英] How to Set Path Environment Variable using CMake and Visual Studio to Run Test

查看:1183
本文介绍了如何使用CMake和Visual Studio设置路径环境变量来运行测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用CMake生成Visual Studio项目文件。我想在设置PATH环境变量后运行测试可执行文件,以便能够加载所需的dll。我按照 http://www.mail-archive。 com/cmake@cmake.org/msg21493.html ,但它不起作用。



为此,您是否将Visual Studio用于CMake?请分享你的经验。



此外,我发现没有简单的方法来调试我的CMake脚本,例如看看它分配给PATH变量的值。使用 CMAKE_VERBOSE_MAKEFILE 设置CMake verbose没有帮助。我该怎么去自己调试?

解决方案

为了在CMake中设置Visual Studio中的自定义项目设置,您可以使用XML文件作为可以从CMake配置的模板作为 .user 文件。

在我的工作中,我们使用它来设置自定义调试参数。



检查 .user 文件中的用户设置生成的 .vcproj 文件的目录。以下是我们使用的示例 UserTemplate.vcproj 文件的代码段。

 <?xml version =1.0encoding =Windows-1252?> 
< VisualStudioUserFile
ProjectType =Visual C ++
版本=9.00
ShowAllFiles =false
>
<配置>
< Configuration
Name =Debug | @ USERFILE_PLATFORM @
>
< DebugSettings
Command =@ USERFILE_COMMAND_DEBUG @
WorkingDirectory =@ USERFILE_WORKING_DIRECTORY_DEBUG @
CommandArguments =@ USERFILE_COMMAND_ARGUMENTS_DEBUG @
Attach =false
DebuggerType =3
Remote =1
RemoteMachine =@ USERFILE_REMOTE_MACHINE_DEBUG @
<! - 为代码段移除更多设置 - >
/>
< / Configuration>
<! - 其余的配置 - >

这样,您可以将任何需要的变量从CMake注入 .user 文件。
在CMake中,您可以设置适当的CMake变量(如果需要,可以在模板文件中添加更多的变量)。接下来,您可以执行此操作来配置文件。

 #查找用户和系统名称
SET(SYSTEM_NAME $ ENV {USERDOMAIN} CACHE STRING SystemName)
SET(USER_NAME $ ENV {USERNAME} CACHE STRING UserName)

#配置模板文件
SET(USER_FILE $ {_ projectName} .vcproj $ {SYSTEM_NAME}。$ {USER_NAME} .user)
SET(OUTPUT_PATH $ {CMAKE_CURRENT_BINARY_DIR} / $ {USER_FILE})
CONFIGURE_FILE(UserTemplate.user $ {USER_FILE} @ONLY)


I am using CMake to generate Visual Studio project files. I want to run the test executable after setting the PATH environment variable so that it is able to load the required dll. I tried as per the discussion at http://www.mail-archive.com/cmake@cmake.org/msg21493.html but it does not work.

Have you used CMake with Visual Studio for this purpose? Please share your experiences.

Also, I find no easy way to debug my CMake script, for example to see what value it assigns to the PATH variable. Setting CMake verbose with CMAKE_VERBOSE_MAKEFILE does not help. How would I go about debugging it myself?

解决方案

For setting custom project setting in Visual Studio from CMake you can use a XML file as a template which can be configured from CMake to work as the .user file.
At my work we use this to set custom debug parameters.

Check the directory containing the generated .vcproj files for the user settings in the .user files. Here is a snippet of an example UserTemplate.vcproj file we use.

<?xml version="1.0" encoding="Windows-1252"?>
  <VisualStudioUserFile
    ProjectType="Visual C++"
    Version="9.00"
    ShowAllFiles="false"
    >
    <Configurations>
        <Configuration
            Name="Debug|@USERFILE_PLATFORM@"
            >
            <DebugSettings
                Command="@USERFILE_COMMAND_DEBUG@"
                WorkingDirectory="@USERFILE_WORKING_DIRECTORY_DEBUG@"
                CommandArguments="@USERFILE_COMMAND_ARGUMENTS_DEBUG@"
                Attach="false"
                DebuggerType="3"
                Remote="1"
                RemoteMachine="@USERFILE_REMOTE_MACHINE_DEBUG@"
                            <!-- More settings removed for snippet -->
            />
        </Configuration>
            <!-- Rest of Configurations -->

This way you can inject any needed variables from CMake into the .user file. In CMake you can set the appropiate CMake variables (and add more in the template file if you need them). Next you can do something like this to configure the file.

# Find user and system name
SET(SYSTEM_NAME $ENV{USERDOMAIN} CACHE STRING SystemName)
SET(USER_NAME $ENV{USERNAME} CACHE STRING UserName)

# Configure the template file
SET(USER_FILE ${_projectName}.vcproj.${SYSTEM_NAME}.${USER_NAME}.user)
SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE})
CONFIGURE_FILE(UserTemplate.user ${USER_FILE} @ONLY)

这篇关于如何使用CMake和Visual Studio设置路径环境变量来运行测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆