Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build 如何在CMake的set_target_properties()函数中向同一属性添加多个项?_Build_Cmake - Fatal编程技术网

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,你的问题在陈述时很模糊,但这不起作用,但你的目标现在更明确了。我在回答中添加了第三个选项,这可能有助于解决您看到的格式问题。