2017-01-30 2 views
0

Visual Studio를 통해 CMake로 크로스 컴파일합니다. 크로스 컴파일러의 플랫폼 (Visual Studio의 플랫폼 속성 페이지에서 구현 됨)은 모든 프로젝트에 특정 속성 페이지를 추가해야합니다. 그렇지 않으면 즉시 컴파일이 실패합니다. CMake의 야간 지점에는이 속성 시트를 추가하는 데 사용할 수있는 속성 VS_USER_PROPS_CXX이 있습니다. 이것은 내 프로젝트 파일과 INSTALL 프로젝트 파일을 수정합니다.CMake의 ALL_BUILD 및 ZERO_CHECK 대상에 속성 추가

그러나이 속성은 ALL_BUILD 또는 ZERO_CHECK 대상에 적용되지 않습니다. 내가 CMAKE_SUPPRESS_REGENERATION을 설정할 수 있는데, 이는 ZERO_CHECK (Visual Studio 내에서 재생성을 해제하는 동안) 문제를 피할 수 있지만, ALL_BUILD에 대해서는 아무 것도 할 수없는 것처럼 보입니다. 결과적으로 내가 할 때 : cmake --build <project dir>, ALL_BUILD (프로젝트가 성공하더라도) 실패합니다.

ALL_BUILD을 사용하지 않거나 속성을 추가 할 수있는 방법이 있습니까?

답변

0

CMake에 대한 소스 코드를 검사 한 후에 적어도 추가 기능을 ALL_BUILD (또는 ZERO_CHECK)에 추가 할 방법이 없다는 것은 명백합니다. 그러나 소스 코드를 수정 (예 : 해킹)하여 특정 속성을 유틸리티 대상에 포함시킬 수 있습니다.

즉, 비주얼 스튜디오 발전기에서 cmGlobalVisualStudio8Generator::AddCheckTargetZERO_CHECK 대상을 추가하고 cmGlobalVisualStudioGenerator::AddExtraIDETargetsALL_BUILD 타겟이다. 이들의 소스 코드를 수정하고 cmTarget::SetProperty을 적절한 위치에 적절한 값으로 호출 할 수 있습니다.

이것이 필요한 경우 불행히도 자신 만의 CMake 버전을 유지해야한다는 의미입니다.