提问人:anton 提问时间:8/12/2023 最后编辑:gavrilikhin.danton 更新时间:8/17/2023 访问量:63
使用 CMake 时链接器找不到库
Linker can't find library when using CMake
问:
我正在尝试使用 youtube 教程学习 CMake
安装库成功
(两者和存在)make install
/usr/local/libmearlymath.a
/usr/local/include/adder.h
但是在可执行文件的构建文件夹中运行时,出现以下错误:make
[ 50%] Building CXX object CMakeFiles/testsome.dir/main.cpp.o
[100%] Linking CXX executable testsome
ld: library not found for -lmearlymath
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [testsome] Error 1
make[1]: *** [CMakeFiles/testsome.dir/all] Error 2
make: *** [all] Error 2
项目结构
├── SomeLibDemo
│ └── AddLibDemo
│ ├── CMakeLists.txt
│ ├── adder.cpp
│ ├── adder.h
│ └── build
│
└── TestSome
├── CMakeLists.txt
├── build
└── main.cpp
在库中,文件如下所示:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.27.2)
project(mearlymath)
add_library(${PROJECT_NAME} adder.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER adder.h)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include)
在可执行文件中,文件如下所示:
CMakeLists.txt
cmake_minimum_required(VERSION 3.27.2)
project(testsome)
add_executable(testsome main.cpp)
target_link_libraries(testsome mearlymath)
答:
0赞
Ben A.
8/17/2023
#1
如果链接器找不到该库,则必须确保实际正确包含该库。首先,将此行(放在之前)添加到CMakeLists.txt:target_link_libraries
link_directories(/usr/local/lib)
您也可以明确并添加文件的完整路径,看看这是否有效。例如:
target_link_libraries(testsome /usr/local/lib/mearlymath.a)
评论