는 방법 설정하는 Path 환경변수를 사용하여 많은 파일이 자동으로 만들고 Visual Studio 를 실행하 테스트
-
05-07-2019 - |
문제
내가 사용하고 많은 파일이 자동으로 만들어를 생성하는 Visual Studio 프로젝트 파일입니다.고 싶은 테스트를 실행 실행 한 후 설정하는 PATH 환경변수할 수 있도록을 로드하는 데 필요한 dll.했으로 토론에 따서 http://www.mail-archive.com/cmake@cmake.org/msg21493.html 하지만 그것은 작동하지 않습니다.
당신이 사용되는 많은 파일이 자동으로 만들어 Visual Studio 이러한 목적으?하십시오 당신의 경험을 공유 할 수 있습니다.
또한,는 찾을 수없는 쉬운 방법으로 디버깅하는 나에 많은 파일이 자동으로 만들어트 스크립트,예를 들어 무엇을 보고 값을 할당하는 경로는 변수입니다.설정에 많은 파일이 자동으로 만들어 자세한 정보와 CMAKE_VERBOSE_MAKEFILE
도움이되지 않습니다.어떻게 이동에 관한 디버깅 그것은 나 자신?
해결책
CMAKE에서 Visual Studio에서 사용자 정의 프로젝트 설정을 설정하려면 XML 파일을 CMAKE에서 구성하여 구성 할 수있는 템플릿으로 사용할 수 있습니다. .user
파일.
내 작업에서 우리는 이것을 사용하여 사용자 정의 디버그 매개 변수를 설정합니다.
생성 된 부분이 포함 된 디렉토리를 확인하십시오 .vcproj
사용자 설정의 파일 .user
파일. 다음은 예제의 스 니펫입니다 UserTemplate.vcproj
우리가 사용하는 파일.
<?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 -->
이렇게하면 CMAKE에서 필요한 변수를 주입 할 수 있습니다. .user
파일. CMAKE에서는 적절한 CMAKE 변수를 설정하고 필요한 경우 템플릿 파일에 더 많이 추가 할 수 있습니다). 다음으로 파일을 구성하기 위해 이와 같은 작업을 수행 할 수 있습니다.
# 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 파일을 디버그하기 위해
MESSAGE( STATUS "static text ${variable}" )
나는 경로를 설정할 필요가 없었습니다. 테스트가 실행됩니다. CTEST를 사용하고 있습니까? 다음 링크가 Ctest와 함께 사용되는 것처럼 보입니다.
이것을 일하게하려고한다면 나는 사용할 것입니다 set_tests_properties
명시 적으로 먼저.
set_tests_properties(SomeTest PROPERTIES ENVIRONMENT "PATH=c:\somedir;c:\otherdir")
그런 다음 더 일반화하십시오.
관련 CMAKE 기능 요청 보고서는 다음과 같습니다.
http://www.kwwidgets.org/bug/view.php?id=8884
업데이트 :에 따라 해결되었습니다 CMAKE를 사용하여 Visual Studio Project "사용자 정의 환경 변수"설정 설정 - 아래 의견에 대해 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"
)
참조
고 싶어하는 매우 유용한 추가 을 설정할 수 있는 여러한 환경 변수 하나의 반대(예를 들어,PATH) 가에 주어진 이 링크 https://stackoverflow.com/a/40531167/9253113
하는 경우 예를 들어,설정뿐 아니라 경로를 설정하고 싶어 다른 변수 OTHERVAR 한 것을 줄 수정
<LocalDebuggerEnvironment>PATH=C:\Test</LocalDebuggerEnvironment>
하기
<LocalDebuggerEnvironment>PATH=C:\Test 
OTHERVAR="value of OTHERVAR"</LocalDebuggerEnvironment>
는 상징"

"말 xml 파서를 소개하는 LF 문자입니다.그래서 여러 변수를 정의
은 가능한 경우로 구분하여 LF(문 CR 캐릭터가 작동하지 않는 조합 CRLF)
또한 있다는 것을 알 수 없는 공간 사이 

다음 변수입니다.