如何在CMake的set_target_properties()函数中向同一属性添加多个项目?

问题描述 投票:0回答:2
set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE 
                       ${_IMPORT_PREFIX}/lib/mysharedlibrary.so)

将添加该共享库。但是,我希望添加多个共享库。

我尝试了以下操作:

set_target_properties(MyTarget PROPERTIES IMPORTED_LOCATION_RELEASE 
                       "${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so" 
                       "${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so")

但是这不起作用。

build cmake
2个回答
0
投票

因为set_target_properties()可以在一个调用中设置多个属性,所以必须使set_target_properties()之后的参数显示为一个参数。为此,可以将库连接到以分号分隔的列表中:

IMPORTED_LOCATION_RELEASE

或者,您可以使用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()

0
投票

set_property()指定单个文件的位置。您可以创建两个目标,然后与它们链接:

set_property(TARGET MyTarget PROPERTY
    IMPORTED_LOCATION_RELEASE 
    ${_IMPORT_PREFIX}/lib/mysharedlibrary_1.so
    ${_IMPORT_PREFIX}/lib/mysharedlibrary_2.so
)
© www.soinside.com 2019 - 2024. All rights reserved.