Cmake жалуется на неправильное количество аргументов - PullRequest
4 голосов
/ 19 декабря 2009
SET_TARGET_PROPERTIES(
  wtdbo
PROPERTIES
  VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}
  SOVERSION ${WTDBO_SOVERSION}
  DEBUG_POSTFIX "d"
)

Ошибка:

Ошибка CMake в файле src / Wt / Dbo / CMakeLists.txt: 18 (SET_TARGET_PROPERTIES): Вызов set_target_properties с неверным количеством аргументов

Если я удаляю его, он просто настраивается.
Есть идеи почему?

Спасибо
Омер

Ответы [ 2 ]

7 голосов
/ 21 декабря 2009

Помните, что это макрос, поэтому символы перед заменой заменяются. Это означает, что символы, которые являются пустыми строками, будут заменены на ничто перед оценкой. Таким образом, если WTDBO_SOVERSION равен "", то

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION ${WTDBO_SOVERSION})

станет

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION)

, и это вызовет ошибку. Если для вашей цели допустимы пустые строки, заключите символ в кавычки. например,

SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION "${WTDBO_SOVERSION}")
4 голосов
/ 21 декабря 2009

Вы уверены, что переменные установлены правильно? Я проверил этот файл 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 команда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...