Qt CMake COMPILE_定义触发错误数量的参数

Qt CMake COMPILE_定义触发错误数量的参数,qt,cmake,Qt,Cmake,我在理解如何正确设置CMake中的COMPILE\u定义target属性时遇到问题 我的目标是添加库(modelutilities静态${modelutilities\u SRCS}) 如果我使用 set(modelutilities_COMPILE_DEFINE ${modelutilities_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS}) set_target_properties(modelutilities PROPERTIES

我在理解如何正确设置CMake中的
COMPILE\u定义
target属性时遇到问题

我的目标是添加库(modelutilities静态${modelutilities\u SRCS})

如果我使用

set(modelutilities_COMPILE_DEFINE ${modelutilities_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
set_target_properties(modelutilities PROPERTIES 
    VERSION "0.0.1"
    SOVERSION 0
    EXPORT_NAME "ModelUtilities"
    ARCHIVE_OUTPUT_DIRECTORY "${modelutilities_PlatformDir}/lib"
    LIBRARY_OUTPUT_DIRECTORY "${modelutilities_PlatformDir}/lib"
    RUNTIME_OUTPUT_DIRECTORY "${modelutilities_PlatformDir}/bin"
    COMPILE_DEFINITIONS ${modelutilities_COMPILE_DEFINE}
)
一切都正常,但是如果我在它们之间添加另一行
set(modelutilities\u COMPILE\u DEFINE${modelutilities\u COMPILE\u DEFINE}modelutilities\u LIB)
它会停止工作,抱怨调用的
set\u target\u properties
参数数量错误

谁能看出我做错了什么

附言

我已经尝试使用双引号:
set(modelutilities\u COMPILE\u DEFINE${modelutilities\u COMPILE\u DEFINE}“modelutilities\u LIB”)
。它没有改变任何事情

p.p.S


如果我
消息(状态${modelutilities\u COMPILE\u DEFINE})
QT\u WIDGETS\u LIB;QT_GUI_LIB;在第一种情况下,QT_核心_库
QT_库;QT_GUI_LIB;QT_核心库;MODELUTILITIES_LIB
在第二个

版本较新的CMake中,所宣扬的是目标的概念。因此,例如,现在首选使用
target\u include\u directories()
而不是
include\u directories()

在这种情况下,我认为最好使用首选的
target\u compile\u definitions()
为实用程序库设置编译定义


您获得的一个优势是,您可以使用
PUBLIC
PRIVATE
关键字确定编译定义的范围

我建议改为使用target_compile_definitions():这解决了我的问题。我知道这是一个解决办法,但它做同样的事情。如果你想把它写进一个真实的答案,我很乐意接受