2017-05-15 22 views
0

TeamCityの継続的統合のためにブランチバージョンスキーマごとに設定する必要があります。私がする必要がある最後の部分は、C++ヘッダファイルからバージョンを解析するPowershellスクリプトです。Cヘッダ#を定義する方法powershellで定義する

私は次でそれを行うには、私はC++のヘッダファイルにバージョンを読んで、私はParseDefineを実装する必要があります

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

を設定する必要があります

#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スクリプトを以下している

ステップ機能はありますが、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']" 
関連する問題