【初心者向け】CMake: Visual Studioプロジェクトのソース管理を「VS_SCC_LOCALPATH」でシンプルに設定


VS_SCC_LOCALPATH は、CMake の "Properties: Targets" プロパティの一つであり、Visual Studio プロジェクトにおけるソースコード管理のローカルパスを設定するために使用されます。具体的には、ソースコード管理システム (SCM) がプロジェクトのソースファイルを格納するローカルディレクトリを指定します。

用途

VS_SCC_LOCALPATH は、以下の場合に役立ちます。

  • プロジェクトのソースコード管理システムの場所を変更したい場合
  • 複数のプロジェクトで異なるソースコード管理システムを使用したい場合
  • Visual Studio でプロジェクトを開いた際に、自動的にソースコード管理システムに接続したい場合

設定方法

VS_SCC_LOCALPATH は、set_target_properties コマンドを使用して設定できます。以下の例は、myproject という名前のターゲットの VS_SCC_LOCALPATH プロパティを /path/to/source/code に設定する方法を示しています。

set_target_properties(myproject PROPERTIES VS_SCC_LOCALPATH "/path/to/source/code")

注意点

  • VS_SCC_LOCALPATH プロパティを設定しても、ソースコード管理システムが自動的に接続されるとは限りません。ソースコード管理システムに接続するには、Visual Studio で手動で接続する必要があります。
  • VS_SCC_LOCALPATH プロパティは、Visual Studio 固有のものです。他の IDE では使用できません。

以下の例は、myproject という名前のターゲットの VS_SCC_LOCALPATH プロパティを /path/to/source/code に設定し、Visual Studio でプロジェクトを開いた際に自動的に Git に接続するように設定する方法を示しています。

set_target_properties(myproject PROPERTIES VS_SCC_LOCALPATH "/path/to/source/code" VS_SCC_PROVIDER "Git:MSSCCI")
  • VS_SCC_LOCALPATH プロパティは、ターゲットだけでなく、プロジェクト全体にも設定できます。
  • VS_SCC_LOCALPATH プロパティは、CMake 3.0 以降で使用できます。


例 1: 単一ターゲット

cmake_minimum_required(VERSION 3.0)

project(myproject)

set(CMAKE_SOURCE_DIR "/path/to/source/code")

set_target_properties(myproject PROPERTIES
  VS_SCC_LOCALPATH "${CMAKE_SOURCE_DIR}"
  VS_SCC_PROVIDER "Git:MSSCCI")

例 2: 複数のターゲット

この例では、myproject1myproject2 という名前の 2 つのターゲットの VS_SCC_LOCALPATH プロパティを設定します。myproject1 は Git を使用し、myproject2 は Subversion を使用します。

cmake_minimum_required(VERSION 3.0)

project(myproject)

set(CMAKE_SOURCE_DIR "/path/to/source/code")

set_target_properties(myproject1 PROPERTIES
  VS_SCC_LOCALPATH "${CMAKE_SOURCE_DIR}"
  VS_SCC_PROVIDER "Git:MSSCCI")

set_target_properties(myproject2 PROPERTIES
  VS_SCC_LOCALPATH "${CMAKE_SOURCE_DIR}/subversion"
  VS_SCC_PROVIDER "Subversion:MSSCCI")

例 3: プロジェクト全体

この例では、プロジェクト全体の VS_SCC_LOCALPATH プロパティを /path/to/source/code に設定します。

cmake_minimum_required(VERSION 3.0)

project(myproject)

set(CMAKE_SOURCE_DIR "/path/to/source/code")

set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY VS_SCC_LOCALPATH "/path/to/source/code")
  • set_property コマンドを使用して、プロジェクト全体の VS_SCC_LOCALPATH プロパティを設定しています。
  • set_target_properties コマンドを使用して、ターゲットの VS_SCC_LOCALPATH プロパティと VS_SCC_PROVIDER プロパティを設定しています。
    • VS_SCC_LOCALPATH プロパティは、ソースコード管理システムのローカルパスを指定します。
    • VS_SCC_PROVIDER プロパティは、使用するソースコード管理システムの種類を指定します。
  • set(CMAKE_SOURCE_DIR, "/path/to/source/code") コマンドを使用して、プロジェクトのソースコードディレクトリを /path/to/source/code に設定しています。
  • project コマンドを使用して、プロジェクトの名前を myproject に設定しています。
  • 上記の例では、cmake_minimum_required コマンドを使用して、CMake の最低必要なバージョンを 3.0 に設定しています。


代替プロパティ

  • SET_PROPERTY(DIRECTORY ... VS_SCC_LOCALPATH ...)
    このコマンドは、プロジェクトディレクトリの VS_SCC_LOCALPATH プロパティを設定するために使用できます。
    • 利点
      特定のディレクトリにのみ VS_SCC_LOCALPATH プロパティを設定できます。
    • 欠点
      設定が少し複雑です。
  • CMAKE_CURRENT_SOURCE_DIR
    このプロパティは、現在の CMake ディレクトリのパスを指定します。Visual Studio は、このプロパティを使用して、ソースコード管理システムのローカルパスを自動的に推測することができます。
    • 利点
      設定が簡単です。
    • 欠点
      常に正確なローカルパスを推測できるとは限りません。
  • CMAKE_SOURCE_DIR
    このプロパティは、プロジェクトのソースコードディレクトリを指定します。Visual Studio は、このプロパティを使用して、ソースコード管理システムのローカルパスを自動的に推測することができます。
    • 利点
      設定が簡単です。
    • 欠点
      常に正確なローカルパスを推測できるとは限りません。

以下の例は、VS_SCC_LOCALPATH プロパティの代替方法を示しています。

例 1: CMAKE_SOURCE_DIR

cmake_minimum_required(VERSION 3.0)

project(myproject)

set(CMAKE_SOURCE_DIR "/path/to/source/code")

例 2: CMAKE_CURRENT_SOURCE_DIR

cmake_minimum_required(VERSION 3.0)

project(myproject)

add_executable(myproject main.cpp)

例 3: SET_PROPERTY(DIRECTORY ... VS_SCC_LOCALPATH ...)

cmake_minimum_required(VERSION 3.0)

project(myproject)

set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY VS_SCC_LOCALPATH "/path/to/source/code")

VS_SCC_LOCALPATH プロパティは、Visual Studio でプロジェクトを開いた際に自動的にソースコード管理システムに接続したい場合に役立ちます。しかし、常に正確なローカルパスを推測できるとは限りません。より正確な方法が必要な場合は、CMAKE_SOURCE_DIRCMAKE_CURRENT_SOURCE_DIR、または SET_PROPERTY(DIRECTORY ... VS_SCC_LOCALPATH ...) コマンドを使用することを検討してください。

  • 使用する代替方法は、プロジェクトのニーズによって異なります。