CMake:IMPORTED 和 IMPORTED_LOCATION 的目的

问题描述 投票:0回答:1

有人可以解释一下(举例)cmake

IMPORTED
IMPORTED_LOCATION
属性的目的/用途是什么。我有一个依赖于共享库的可执行文件,目前在我的
CMakeLists.txt
中,这就是已编写的内容

cmake_minimum_required(VERSION 3.16)
project(proj)

include(GNUInstallDirs)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

add_executable(${PROJECT_NAME}
    src/main.cpp
)

target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)

add_library(shared1 SHARED IMPORTED)

set_target_properties(shared1 PROPERTIES
        IMPORTED_LOCATION "${CMAKE_INSTALL_FULL_LIBDIR}/libshared1.so"
    )
    
target_link_libraries(${PROJECT_NAME} PRIVATE
    shared1
)

当库已存在于

add_library
并且链接器/加载器知道此位置时,为什么需要
set_target_properties
/usr/local/lib
函数调用?

cmake
1个回答
0
投票

线路:

add_library(shared1 SHARED IMPORTED)

创建了一个导入库。导入的库不是在项目内部构建的,它们实际上是指向已构建库的链接。您可以使用此方法为您的第 3 方库创建目标并将其轻松链接到其他目标。线路:

set_target_properties(shared1 PROPERTIES
        IMPORTED_LOCATION "${CMAKE_INSTALL_FULL_LIBDIR}/libshared1.so"
    )

为导入的库设置已构建库的位置。

© www.soinside.com 2019 - 2024. All rights reserved.