44

CMakeを使用してVisualStudioプロジェクトファイルを生成しています。必要なdllをロードできるように、PATH環境変数を設定した後、テスト実行可能ファイルを実行したいと思います。http://www.mail-archive.com/cmake@cmake.org/msg21493.htmlでの議論に従って試しましたが、機能しません。

この目的でVisualStudioでCMakeを使用しましたか?あなたの経験を共有してください。

また、CMakeスクリプトをデバッグする簡単な方法が見つかりません。たとえば、スクリプトがPATH変数に割り当てる値を確認します。CMakeverboseをで設定しCMAKE_VERBOSE_MAKEFILEても効果はありません。自分でデバッグするにはどうすればよいですか?

4

6 に答える 6

42

CMake から Visual Studio でカスタム プロジェクト設定を設定するには、ファイルとして機能するように CMake から構成できる XML ファイルをテンプレートとして使用でき.userます。
私の職場では、これを使用してカスタム デバッグ パラメータを設定しています。

生成されたファイルを含むディレクトリ.vcxprojで、ファイル内のユーザー設定を確認してください.userUserTemplate.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 -->

UserTemplate.vcxproj.userPATH 変数を設定する別の例は 次のとおりです。

    <?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>

UserTemplate.vcxproj.userファイルの隣にファイルを設定すると、ビルドされたプロジェクトCMakeLists.txtのファイルに CMake から必要な変数を挿入できます。.vcxproj.userCMake では、適切な 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}.vcxproj.${SYSTEM_NAME}.${USER_NAME}.user)
    SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE})
    CONFIGURE_FILE(UserTemplate.vcxproj.user${USER_FILE} @ONLY)

システムとユーザー名を気にしない場合は、次の構成で十分です。

    # Configure the template file
    SET(USER_FILE ${_projectName}.vcxproj.user)
    SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE})
    CONFIGURE_FILE(UserTemplate.vcxproj.user ${USER_FILE} @ONLY)
于 2009-08-20T17:47:46.313 に答える
11

今この質問を見つけました。私が使用するcmakeファイルをデバッグするには

MESSAGE( STATUS "static text ${variable}" )

テストを実行するためにパスを設定する必要はありませんでした。CTestを使用していますか?あなたがたどっているリンクはctestで使用されているようです。

これを機能させようとしている場合は、set_tests_properties最初に明示的に使用します。

set_tests_properties(SomeTest PROPERTIES ENVIRONMENT "PATH=c:\somedir;c:\otherdir")

次に、それをより一般的にします。

于 2009-07-03T12:05:46.573 に答える
5

関連する CMake 機能リクエスト レポートは次のとおりです。

http://www.kwwidgets.org/Bug/view.php?id=8884

更新: Visual Studio プロジェクトの「カスタム環境変数」設定を CMakeで設定することで解決されました - 以下のコメントについて Florian に感謝します。

于 2009-09-29T10:22:35.293 に答える