2009-12-19 45 views
4
SET_TARGET_PROPERTIES(
    wtdbo 
PROPERTIES 
    VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR} 
    SOVERSION ${WTDBO_SOVERSION} 
    DEBUG_POSTFIX "d" 
) 

的錯誤是:CMake的抱怨錯誤的參數數目

在SRC

CMake的錯誤/重量/ DBO /的CMakeLists.txt:18(SET_TARGET_PROPERTIES): set_target_properties調用的參數數目不正確

如果我刪除它配置就好了。
任何想法爲什麼?

感謝,
奧馬爾

+0

我不知道cmake的,但我認爲這不可能是太困難了,所以我用Google搜索了一下,並根據基本手冊信息,我能找到看起來不錯。建議:在此之前查看指令,發佈更多腳本幷包含行號,查看宏定義的位置。 – 2009-12-19 19:03:46

回答

3

你確定你有變量設置是否正確?我已經與這個文件的CMakeLists.txt檢查,它工作正常:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 
PROJECT(test CXX) 
ADD_LIBRARY(wtdbo SHARED test.cc) 
SET(WTDBO_SOVERSION 1) 
SET(VERSION_SERIES 1) 
SET(VERSION_MAJOR 0) 
SET(VERSION_MINOR 0) 

SET_TARGET_PROPERTIES(
    wtdbo 
PROPERTIES 
    VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR} 
    SOVERSION ${WTDBO_SOVERSION} 
    DEBUG_POSTFIX "d" 
) 

但是,如果我註釋掉SET(WTDBO_SOVERSION 1)線我得到同樣的錯誤消息,因爲你做的。爲set_target_properties的幫助如下,所以你肯定是做正確的事:

目標可以有 影響如何構建性能。

set_target_properties(target1 target2 ... 
      PROPERTIES prop1 value1 
      prop2 value2 ...) 

設置目標的屬性。命令的 語法是列出所有要更改的文件的 ,然後 提供您要設置下一個的值 的值。您可以使用任何您想要的道具值對 ,稍後使用 GET_TARGET_PROPERTY命令將其解壓。

6

請記住,這是一個宏,所以符號在被評估之前被替換。這意味着在評估之前,空字符串將被替換爲空白。因此,如果WTDBO_SOVERSION是 「」,那麼

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION ${WTDBO_SOVERSION}) 

將成爲

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION) 

,這將觸發錯誤。如果空字符串對於您的目的有效,則用引號括住該符號。例如

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION "${WTDBO_SOVERSION}")