2013-04-15 127 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。根據文檔應自動設置,但每當我嘗試打印它,它是空的,沒有使用代碼中的最後一行。 Q2302。如果我想從子目錄下建而已,我得到一個錯誤喊:

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

這是因爲我使用parent_VERSION那裏。

所以,我明白,這是不能夠得到parent_VERSION不從頂級目錄運行cmake的,但我怎麼更改代碼,使得它可以構建即使沒有從頂層運行。 我用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

相關問題