는 방법 설정하는 Path 환경변수를 사용하여 많은 파일이 자동으로 만들고 Visual Studio 를 실행하 테스트

StackOverflow https://stackoverflow.com/questions/1005901

문제

내가 사용하고 많은 파일이 자동으로 만들어를 생성하는 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 &#xA;OTHERVAR="value of OTHERVAR"</LocalDebuggerEnvironment>

는 상징"&#xA;"말 xml 파서를 소개하는 LF 문자입니다.그래서 여러 변수를 정의 은 가능한 경우로 구분하여 LF(문 CR 캐릭터가 작동하지 않는 조합 CRLF)

또한 있다는 것을 알 수 없는 공간 사이 &#xA; 다음 변수입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top