====== CMake und TFS ======
Für die Bindings einer Visual Studio Solution mit dem TFS-Server werden folgende Einträge angelegt (Beispiele aus ImageTo3D).
Unter dem Abschnitt Global im Solution-File:
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 3
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = http://tfs-server.ntb.ch:8080/tfs/classcad
SccProjectUniqueName0 = 3DReconstruction\\3DReconstruction.vcxproj
SccProjectName0 = 3DReconstruction
SccAuxPath0 = http://tfs-server.ntb.ch:8080/tfs/classcad
SccLocalPath0 = 3DReconstruction
SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccProjectUniqueName1 = 3DRecConsole\\3DRecConsole.vcxproj
SccProjectName1 = 3DRecConsole
SccAuxPath1 = http://tfs-server.ntb.ch:8080/tfs/classcad
SccLocalPath1 = 3DRecConsole
SccProvider1 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccProjectUniqueName2 = VanishingPointDetection\\VanishingPointDetection.vcxproj
SccProjectName2 = VanishingPointDetection
SccAuxPath2 = http://tfs-server.ntb.ch:8080/tfs/classcad
SccLocalPath2 = VanishingPointDetection
SccProvider2 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
EndGlobalSection
Sowie im Projektfile unter der Propertygroup Globals:
{180ABFA3-1346-484E-8843-4E777FC7BFE9}
Win32Proj
Win32
ImageTo3D
SAK
SAK
SAK
SAK
Für jedes verbundene Projekt besteht ein Eintrag in der Solution mit den Angaben zur TFS-URL sowie dem Pfad innerhalb des Workspaces. Sobald das Projekt gebunden ist, stehen in den Scc* Einträgen des Projektes der Wert SAK für //Should already know// - soll heissen, dass die Einstellungen aus der Solution kommen.
CMake-Code in Unterprojekten:
# Define TFS Source Control project bindings
# SAK stands for should already know, as already done in the solution file
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VS_SCC_PROJECTNAME SAK
VS_SCC_LOCALPATH SAK
VS_SCC_PROVIDER SAK
VS_SCC_AUXPATH SAK)
CMake-Code in Hauptprojekt (Variable PROJECTS muss vorher definiert werden):
SET(TFS_URL CACHE STRING "Path to Team Foundation Server Team Project")
# Link to Team Foundation Servers
LIST(LENGTH PROJECTS NOF_PROJECTS)
LIST(APPEND TFS_GLOBAL_SECTION SccNumberOfProjects=${NOF_PROJECTS})
LIST(APPEND TFS_GLOBAL_SECTION SccEnterpriseProvider={4CA58AB2-18FA-4F8D-95D4-32DDF27D184C})
LIST(APPEND TFS_GLOBAL_SECTION SccTeamFoundationServer=${CLASSCAD_TFS_URL})
LIST(APPEND TFS_GLOBAL_SECTION SccEnterpriseProvider={4CA58AB2-18FA-4F8D-95D4-32DDF27D184C})
SET(project_index 0)
FOREACH(project ${PROJECTS})
LIST(APPEND TFS_GLOBAL_SECTION SccProjectUniqueName${project_index}=${project}\\${project}.vcxproj)
LIST(APPEND TFS_GLOBAL_SECTION SccProjectName${project_index}=${project})
LIST(APPEND TFS_GLOBAL_SECTION SccAuxPath${project_index}=${CLASSCAD_TFS_URL})
LIST(APPEND TFS_GLOBAL_SECTION SccLocalPath${project_index}=${project})
LIST(APPEND TFS_GLOBAL_SECTION SccProvider${project_index}={4CA58AB2-18FA-4F8D-95D4-32DDF27D184C})
MATH(EXPR project_index "${project_index} + 1")
ENDFOREACH(project)
set_property(DIRECTORY . PROPERTY VS_GLOBAL_SECTION_PRE_TeamFoundationVersionControl ${TFS_GLOBAL_SECTION})