ami*_*mit 42 dll build cmake visual-studio
我正在使用CMake生成Visual Studio项目文件.我想在设置PATH环境变量后运行测试可执行文件,以便它能够加载所需的dll.我根据http://www.mail-archive.com/cmake@cmake.org/msg21493.html上的讨论尝试过,但它不起作用.
您是否为此目的使用CMake和Visual Studio?请分享您的经验.
此外,我找不到调试我的CMake脚本的简单方法,例如查看它赋予PATH变量的值.设置CMake详细CMAKE_VERBOSE_MAKEFILE
没有帮助.我将如何自己调试?
pki*_*kit 42
要从CMake在Visual Studio中设置自定义项目设置,您可以使用XML文件作为模板,可以从CMake配置该模板作为.user
文件.
在我的工作中,我们使用它来设置自定义调试参数.
检查包含.vcxproj
文件中用户设置的生成文件的.user
目录.这是UserTemplate.vcxproj.user
我们使用的示例文件的片段.
<?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 -->
Run Code Online (Sandbox Code Playgroud)
这样,您可以将任何需要的变量从CMake注入到UserTemplate.vcxproj.user
文件中.在CMake中,您可以设置适当的CMake变量(如果需要,可以在模板文件中添加更多变量).接下来,您可以执行以下操作来配置文件.
<?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;%PATH%".</LocalDebuggerEnvironment>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
iai*_*ain 10
刚刚发现了这个问题.要调试我使用的cmake文件
MESSAGE( STATUS "static text ${variable}" )
Run Code Online (Sandbox Code Playgroud)
我从来没有设置路径让我的测试运行.你在使用CTest吗?看起来您关注的链接与ctest一起使用.
如果我试图让它工作,我会set_tests_properties
先明确使用.
set_tests_properties(SomeTest PROPERTIES ENVIRONMENT "PATH=c:\somedir;c:\otherdir")
Run Code Online (Sandbox Code Playgroud)
然后使它更通用.
小智 7
Cmake 有一个 VS_DEBUGGER_ENVIRONMENT 属性,可用于设置自定义 PATH
https://cmake.org/cmake/help/v3.13/prop_tgt/VS_DEBUGGER_ENVIRONMENT.html
set(MY_PATH "PATH=%PATH%" ${MY_CUSTOM_PATH})
set_target_properties(MyTarget PROPERTIES VS_DEBUGGER_ENVIRONMENT "{MY_PATH}")
Run Code Online (Sandbox Code Playgroud)
其他一些有用的属性是 VS_DEBUGGER_COMMAND_ARGUMENTS、VS_DEBUGGER_WORKING_DIRECTORY。
这是相关的CMake功能请求报告:
http://www.kwwidgets.org/Bug/view.php?id=8884
更新:使用CMake按照Set Visual Studio项目的“自定义环境变量”设置进行了解决 -感谢Florian在下面的评论。
您可以使用新的VS_USER_PROPS
目标属性(版本 >= 3.8)全局提供任何选项。
这是一个工作示例:
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(SetEnvPathTest)
file(WRITE main.cpp [=[
// http://en.cppreference.com/w/cpp/utility/program/getenv
#include <iostream>
#include <cstdlib>
int main()
{
if(const char* env_p = std::getenv("PATH"))
std::cout << "Your PATH is: " << env_p << '\n';
}
]=])
add_executable(${PROJECT_NAME} main.cpp)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.Cpp.user.props" [=[
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerEnvironment>PATH=C:\Test</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerEnvironment>PATH=C:\Test</LocalDebuggerEnvironment>
</PropertyGroup>
</Project>
]=])
set_target_properties(
${PROJECT_NAME}
PROPERTIES
VS_USER_PROPS "${PROJECT_NAME}.Cpp.user.props"
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32442 次 |
最近记录: |