cmake - 如何在没有完整路径的情况下链接静态库?
问题描述
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
)
解决方案
指定链接器在链接给定目标时应搜索库的路径。
...
注意:此命令很少需要,在有其他选择时应避免使用。尽可能将完整的绝对路径传递给库,因为这样可以确保始终链接正确的库。
target_link_directories(testlib PUBLIC ${CMAKE_SOURCE_DIR})
推荐阅读
- c# - 如何将 NUnit 3 中 TestContext.Progress.WriteLine 的输出保存到 TestResult.xml?
- environment-variables - 根据另一个环境变量设置 Google Cloud Run 环境变量值
- python - 通过 lambda 调用函数时尺寸错误
- azure - Pulumi 意外地对共享访问签名 (SAS) 的部分进行了 urlencode
- sas - 如何从表中选择一个值,用于比较(大于/小于)?
- python - 覆盖两个 seaborn 地块
- firebase - 通过 Firebase 的 FCM API 测试发送通知
- reactjs - yarn start:all 命令适用于 mac,但在 windows 系统中为相同的 package.json 脚本值抛出错误
- javascript - 如何使用 Datatable 以 POST 类型传递请求正文数据以使用 Javascript 进行服务器端分页
- c++ - 在 VScode 中包含 aws-sdk-cpp 的路径错误