SET_TARGET_PROPERTIES(
wtdbo
PROPERTIES
VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}
SOVERSION ${WTDBO_SOVERSION}
DEBUG_POSTFIX "d"
)
错误是:
src / Wt / Dbo / CMakeLists.txt的CMake错误:18(SET_TARGET_PROPERTIES): 调用set_target_properties时参数数量不正确
如果我删除它,它配置就好了。
知道为什么吗?
谢谢,
奥马尔
答案 0 :(得分:7)
请记住,这是一个宏,因此在评估之前会替换符号。这意味着在评估之前,空字符串的符号将被替换为空。因此,如果WTDBO_SOVERSION是“”那么
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION ${WTDBO_SOVERSION})
会变成
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION)
这会触发错误。如果空字符串对您的目的有效,则用引号括起符号。 e.g。
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION "${WTDBO_SOVERSION}")
答案 1 :(得分:4)
您确定已正确设置变量吗?我已经检查过这个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
命令。