Build 如何在CMake的set_target_properties()函数中向同一属性添加多个项?
将添加该共享库。但是,我希望添加多个共享库 我尝试了以下方法:Build 如何在CMake的set_target_properties()函数中向同一属性添加多个项?,build,cmake,Build,Cmake,将添加该共享库。但是,我希望添加多个共享库 我尝试了以下方法: set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE ${_IMPORT_PREFIX}/lib/mysharedlibrary.so) 但这不起作用 因为可以在一个调用中设置多个属性,所以必须使导入的\u LOCATION\u发布后的参数显示为一个参数。要实现此目的,可以将库连接到分号分隔的列表中:
set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE
${_IMPORT_PREFIX}/lib/mysharedlibrary.so)
但这不起作用 因为可以在一个调用中设置多个属性,所以必须使导入的\u LOCATION\u发布后的参数显示为一个参数。要实现此目的,可以将库连接到分号分隔的列表中:
set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE
"${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so"
"${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so")
或者,可以使用set命令为您创建列表。您可以在变量中设置这些库,然后让列表变量在set_target_properties调用中展开:
第三个选项是使用,它允许您将每个库作为单独的参数列出,这可能有助于提供更正确的格式:
set(MY_SHARED_LIBS
"${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so"
"${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so"
)
set_target_properties(MyTarget PROPERTIES
IMPORTED_LOCATION_RELEASE "${MY_SHARED_LIBS}"
)
由于可以在一个调用中设置多个属性,因此必须使导入的\u位置\u发布后的参数显示为一个参数。要实现此目的,可以将库连接到分号分隔的列表中:
set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE
"${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so"
"${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so")
或者,可以使用set命令为您创建列表。您可以在变量中设置这些库,然后让列表变量在set_target_properties调用中展开:
第三个选项是使用,它允许您将每个库作为单独的参数列出,这可能有助于提供更正确的格式:
set(MY_SHARED_LIBS
"${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so"
"${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so"
)
set_target_properties(MyTarget PROPERTIES
IMPORTED_LOCATION_RELEASE "${MY_SHARED_LIBS}"
)
导入的位置发布指定单个文件的位置。您可以创建两个目标,然后与它们链接:
set_property(TARGET MyTarget PROPERTY
IMPORTED_LOCATION_RELEASE
${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so
${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so
)
导入的位置发布指定单个文件的位置。您可以创建两个目标,然后与它们链接:
set_property(TARGET MyTarget PROPERTY
IMPORTED_LOCATION_RELEASE
${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so
${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so
)
CMake中的列表只是以;分隔的字符串;。试试${u IMPORT_PREFIX}/lib/mysharedlibrary_1.so${{u IMPORT_PREFIX}/lib/mysharedlibrary_2.so.你能看看这个问题的答案和我对它的评论吗?CMake中的列表只是用;分隔的字符串;。试试${u IMPORT_PREFIX}/lib/mysharedlibrary_1.so${{u IMPORT_PREFIX}/lib/mysharedlibrary_2.so.你能看一下这个问题的答案和我对它的评论吗?我正在尝试传递库文件以进行链接。如果我按照你在这里说的做,在我的编译步骤中,cmake将其解释为$PREFIX/lib/mysharedlib_1.so$前缀/lib/mysharedlib_2.so。但我真正想要的是$PREFIX/lib/mysharedlib_1.so$PREFIX/lib/mysharedlib_2.so。请注意,我甚至不想要@Chani Ok,你的问题在陈述时很模糊,但这不起作用,但你的目标现在更明确了。我在回答中添加了第三个选项,这可能有助于解决您看到的格式问题。我正在尝试传递库文件以进行链接。如果我按照你在这里说的做,在我的编译步骤中,cmake将其解释为$PREFIX/lib/mysharedlib_1.so$前缀/lib/mysharedlib_2.so。但我真正想要的是$PREFIX/lib/mysharedlib_1.so$PREFIX/lib/mysharedlib_2.so。请注意,我甚至不想要@Chani Ok,你的问题在陈述时很模糊,但这不起作用,但你的目标现在更明确了。我在回答中添加了第三个选项,这可能有助于解决您看到的格式问题。