首页 > 解决方案 > 如何在没有完整路径的情况下链接静态库?

问题描述

root
 +-- main.cpp
 +-- CMakeLists.txt
 +-- liblib1.a

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)

project(testlib LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(testlib main.cpp)

target_link_libraries(testlib
    ${CMAKE_SOURCE_DIR}/liblib1.a
)

如何链接没有${CMAKE_SOURCE_DIR}喜欢:

target_link_libraries(testlib
    lib1
)

如何使${CMAKE_SOURCE_DIR}路径对 CMAKE 可见ld


顺便说一句,下面没有工作error: cannot find -llib1

link_directories(${CMAKE_SOURCE_DIR})

target_link_libraries(testlib
    lib1
)

标签: cmake

解决方案


使用target_link_directories

指定链接器在链接给定目标时应搜索库的路径。

...

注意:此命令很少需要,在有其他选择时应避免使用。尽可能将完整的绝对路径传递给库,因为这样可以确保始终链接正确的库。

target_link_directories(testlib PUBLIC ${CMAKE_SOURCE_DIR})

推荐阅读