2016-06-03 2 views
1

make package이 어떤 플랫폼에서 메시지를 인쇄하는 것보다 더 많은 일을하지 못하도록하려는 CMake 프로젝트가 있습니다.cmake가 cpack을 실행하지 못하도록

나는 치명적인 메시지를 추가하는 방법을 알고 있지만 빌드 중에는 메시지가 생성되는 동안 실행되지 않습니다. add_custom_command에 의지해야합니까? 그리고 그게 내가 원하는 것을주지 않을 것입니다. 새로운 빌드 타겟을 생성하기 때문에 ...

package 타겟을 오버라이드하면 어떤 플랫폼에서 메시지를 표시 할 수 있습니까?

답변

0

, 당신은 같은 것을 할 수 있습니다 : 기본적으로, 당신은 테스트패키지 같은 예약 된 목표를 오버라이드 (override) 할 수 없습니다 것을

if (! WIN32) 
    include(cpack) 
else() 
    cmake_policy(SET CMP0037 OLD) 
    add_custom_target(package 
     #add dependencies on other targets here 
     #[[DEPENDS install]] 
     COMMAND ${CMAKE_COMMAND} -E echo "custom target for non windows platforms!" 
) 
endif() 

참고. 우리는 여기에 우리의 패키지 타겟을 작성하기 위해이 정책을 꺼버릴 것입니다.

1

왜 cmake 목록에 cpack이 포함되어 있습니까? 일부 cpack 관련 속성을 설정 또한

include(CPack) 

과 :

는 cpack 제어 패키지 대상이 할 수있는 cmake 프로젝트를 위해서는, 프로젝트 같은 라인을 포함해야한다. 너가 그것을 원하지 않으면, 너는 그 선을 꺼낼 수있다. 슈는 지적

+0

"일부 플랫폼에서"그러나 조건 적으로 포함 할 수 있습니다. – thoni56

+0

그래서 리눅스에서 말하면 아무 것도하지 않는 대상 패키지로 실패하는 make 파일을 소스 코드가 생성하도록할까요? 플랫폼에서 32 비트라고 말하면 설치를 거부하는 deb 설치 프로그램 (cpack 패키지의 결과)에 대해 말하는 것이 아닙니다. 맞습니까? –

+0

오른쪽. 아니요, 대상 '패키지'가 메시지를 인쇄하거나 (바람직하게) 메시지를 인쇄하기를 원합니다. 그래서 http://stackoverflow.com/a/38119685/204658 꽤 많이 찾고 있었어요. – thoni56

관련 문제