2011-01-31 2 views
1

buildbot을 사용하여 통합형 통합 플랫폼을 마운트합니다.이 프로젝트는 cmake를 사용하여 Visual Studio 2010 솔루션을 생성합니다. 테스트 목적으로buildbot 및 cmake는 vs2010 생성기를 만들 수 없습니다.

은 내가 cmake 이상한 오류

CMake Error: Could not create named generator "Visual Studio 10"

하지만 난이 cmake를 수동으로 실시 할 경우, 그것은

cmake -G "Visual Studio 10" source

는 config 좋은 일이야 다이의 buildslave 내 창 dev에 VM을 사용 이 빌드 슬레이브 :

factoryWin = BuildFactory() 
factoryWin.addStep(SVN(svnurl=repo_url, mode='copy', username=svn_user, password=svn_passwd)) 
factoryWin.addStep(ShellCommand(command=['cmake', '-G"Visual Studio 10"', 'source'])) 


c['builders'].append(
BuilderConfig(name="runtests-win", 
slavenames=["win-slave"], 
factory=factoryWin) 

아이디어가 있습니까?

답변

5

필자의 경우 환경 변수를 사용하여이 문제를 해결해야했습니다. 그러면 명령은 다음과 같이됩니다.

factoryWin.addStep(ShellCommand(command=['cmake', '-G%CMAKEGENERATOR%', 'source'], 
    env={"CMAKEGENERATOR": "\"Visual Studio 10\""})) 

이 문제는 왜곡 된 실행 프로세스가 문자열을 조작하지 못하게합니다. 내 명령은 그래서 내 경우에는 내가 또한 비주얼 스튜디오 명령 환경을 설정하고 싶었 :

factoryWin.addStep(ShellCommand(command=["c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat", "x86", 
    "&&", "cmake", "-G%CMAKEGENERATOR%", "..\\src"], 
    env={"CMAKEGENERATOR": "\"Visual Studio 10\""})) 

은 분명히 내 빌드 디렉토리와 src 디렉토리 다르지만 사이에 내 상대 경로를 가지고있는 결과는 즉, 같은 비주얼이다 cmake가 생성 한 Studio 솔루션.

6

이 하나가 VS.을 구축 할 수 없습니다 (당신이 Cygwin에서 설치 일어난 경우) 실수로 Cygwin에서의 cmake를 사용하지 않는 확인 귀하의 경우에는

+0

을 '-G ...'앞에 공백이있어 문제가 해결되었지만 이상하다 – kinnou02

+0

고맙다 - 무언가 관련이없는 건물 나는 cygwin의 일부인 cmake와 같은 문제에 부딪 혔다. – Greg

2

나는 문제가 배열이

['cmake', '-G', "Visual Studio 10", 'source'] 

보다는 당신이보고있는 오류에 따옴표

['cmake', '-G"Visual Studio 10"', 'source'] 

읽어야하고 있다고 생각 문자열의 일부이며 없습니다 래퍼.

1

필자는 환경 변수가 반드시 '최상의'대답으로 간주되어야한다고 생각하지 않습니다. 문자열에 올바른 형식을 사용하지 않는 것이 간단한 문제입니다.

이 구문을 사용할 수도 있습니다. ['cmake', '-GVisual Studio 10', 'source']

키워드가 생성자와 sourceDir을 지정하도록 허용하는 ShellCommand를 상속 한 CMakeCommand 클래스를 작성했습니다. 그것은 단지 발전기 및 소스 디렉토리를 지정하는 제거 버전입니다 있지만, CMake 플래그를 포함하는 등

class CMakeCommand(ShellCommand): 

    name = "generate" 
    description = "generating" 
    descriptionDone = "generate" 

    generator="Visual Studio 10" 
    sourceDir = "../" 

    def __init__(self, 
        generator="Visual Studio 10", 
        sourceDir = "../", 
        **kwargs): 

     self.generator = generator 
     self.sourceDir = sourceDir 

     # always upcall! 
     ShellCommand.__init__(self, **kwargs) 

     self.addFactoryArguments(
      generator = generator, 
      sourceDir = sourceDir, 
     ) 
    def start(self): 

     tempCommand = ["cmake", "-G", self.generator ] 
     # Add any flags here 
     # tempCommand.append("-DBUILDNAME=buildbot") 
     tempCommand.append(self.sourceDir) 
     self.setCommand(tempCommand) 

     return ShellCommand.start(self) 

예 단계 사용을 확장 할 수 있습니다 : 내가했을 때, 나는 생각하지 않는다

factoryWin.addStep(
    CMakeCommand(
     generator="Visual Studio 10", 
     sourceDir = "../SVN_CO", # Top level CMakeLists.txt 
     workdir="vc100", # where the build tree will be placed. Automatically created. 
    ) 
) 
+0

안녕하십니까. 감사합니다. 대답. – Brian

관련 문제