如何链接到静态库

How to link to static library?

本文关键字:静态 链接 何链接      更新时间:2023-10-16

我有一个可执行文件,它链接到我构建的静态库和另一个已经构建的提供给我的库。

我正在尝试让 cmake 链接到它,但我总是收到以下错误:

ld: library not found for -lsrc/thislibrary/libthislibrary.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [MyExecutable] Error 1
make[1]: *** [CMakeFiles/DocumentParserTests.dir/all] Error 2
make: *** [all] Error 2

这些是我的构建说明:

add_executable(MyExecutable tests/MyExecutable.cpp)
target_link_libraries(MyExecutable statictests)
target_link_libraries(MyExecutable myownlib)
target_link_libraries(MyExecutable src/thislibrary/libthislibrary.a)

statictestsmyownlib都完美无缺地构建。

> CMake 正在从与预期不同的工作目录运行链接命令。 不要在 CMakeLists.txt 文件中使用裸相对路径,而是使用特殊变量 ${CMAKE_SOURCE_DIR}${CMAKE_CURRENT_SOURCE_DIR}${CMAKE_BINARY_DIR} 等。

有关这些含义的快速备忘单,请参阅 http://www.cmake.org/Wiki/CMake_Useful_Variables,或参阅 CMake 文档。

在您的情况下,我怀疑正确的路径位置是这样的:

target_link_libraries(MyExecutable ${CMAKE_CURRENT_SOURCE_DIR}/src/thislibrary/libthislibrary.a)