2017-05-15 9 views
0

TeamCity의 연속 통합을 위해 분기 버전 관리 스키마마다 설정해야합니다. 마지막으로해야 할 일은 Powershell 스크립트가 C++ 헤더 파일에서 버전을 구문 분석하는 것입니다.C 헤더 #를 정의하는 방법 powershell로 정의

나는

나는 C++ 헤더 파일 다음 한 다음 단계

에서 할 VERSION을 읽고 설정해야

#ifndef VERSION_H 
#define VERSION_H 

#define VERSION 4.0.1 
#define BUILD_NUMBER 9999  

//git SHA 
#define GIT_SHA NotCommittedChanges 

#endif //VERSION_H  

그리고 PowerShell 스크립트

내가 ParseDefine를 구현해야
$content = Get-Content version.h 
$version = ParseDefine('VERSION', $content) 
$buildNumber =[string]::Concat($version, ".", '%build.number%')  
Write-Host "##teamcity[buildNumber '$buildNumber']" 

함수,하지만 powershell의 모든 라인은 항상 고통의 형태입니다 ...

답변

0

마지막으로 PowerShell 솔루션에서 부분적으로 C#으로 끝납니다.

$csharp = @" 
public class Reader 
    { 
     public static string ReadCDefine(string content, string key) 
     { 
      foreach (string line in System.IO.File.ReadAllLines(content)) 
      { 
       string lineT = line.Trim(); 
       string def = "#define " + key + " "; 
       if (lineT.StartsWith(def)) 
       { 
        return line.Substring(def.Length).Trim(); 
       } 
      } 
      return null; 
     } 
    } 
"@ 
Add-Type -TypeDefinition "$csharp" 

$version = [Reader]::ReadCDefine("version.h", "VERSION") 

$buildNumber =[string]::Concat($version,".", '%build.number%') 

Write-Host "##teamcity[buildNumber '$buildNumber']"