2013-04-15 4 views
0

4 가지 하위 프로젝트가있는 프로젝트가 있습니다. 버전을 지정하려면cmake로 라이브러리 버전 관리

SET(parent_VERSION_MAJOR 1) 
SET(parent_VERSION_MINOR 0) 
set(parent_VERSION_PATCH 0) 
set(parent_VERSION 1.0.0) 

을 사용하고 add_subdirectory가 사용되는 경우이를 하위 프로젝트에서 사용할 수 있습니다.

Q1. MAJOR, MINOR 및 PATCH를 기준으로 parent_VERSION을 설정할 수 없습니다. 문서에 따르면 자동으로 설정해야하지만 인쇄 할 때마다 코드의 마지막 줄을 사용하지 않고 비어 있습니다.

2. 하위 디렉토리에서만 빌드하려는 경우 오류 메시지가 표시됩니다.

CMake Error at CMakeLists.txt:28 (set_target_properties): 
    set_target_properties called with incorrect number of arguments. 

이는 parent_VERSION을 사용하고 있기 때문입니다.

그래서 cmake를 최상위 디렉토리에서 실행하지 않고 parent_VERSION을 가져올 수 없다는 것을 이해하지만 최상위 레벨에서 실행하지 않고도 빌드 할 수 있도록 코드를 어떻게 변경합니까? 나는 inherited와 함께 SET에 대해 읽었지만, 나는 그것이 내가 필요한 것이라고 생각하지 않는다.

답변

1

어떻게 해결 했는가? 누군가가 나를 더 좋게/더 우아한 방식으로 말할 수 있다면 행복 할 것입니다.

if(NOT parent_VERSION) 
    SET(parent_VERSION_MAJOR 1) 
    SET(parent_VERSION_MINOR 0) 
    SET(parent_VERSION_PATCH 0) 
    SET(parent_VERSION 1.0.0) 
endif(NOT parent_VERSION) 
+4

나는'설정 할 경향 것 (parent_VERSION의 $ {parent_VERSION_MAJOR을}. $ {parent_VERSION_MINOR}. $ {parent_VERSION_PATCH})'변수 사이에 동기화 손실을 방지합니다. – Fraser