CMake使用FetchContent引入LspCpp库时链接报错:无法找到lspcpp
解决LspCpp库链接错误:cannot find -llspcpp
确认FetchContent配置与目标引用
不要直接用-llspcpp链接,CMake通过FetchContent导入库后,应该使用库定义的CMake目标名。查看LspCpp的CMakeLists.txt,其导出的目标通常是LspCpp(而非小写的lspcpp)。正确的链接配置示例:include(FetchContent) FetchContent_Declare( LspCpp GIT_REPOSITORY https://github.com/kuafuwang/LspCpp.git GIT_TAG main ) FetchContent_MakeAvailable(LspCpp) add_executable(myApp main.cpp) # 使用库的CMake目标直接链接 target_link_libraries(myApp PRIVATE LspCpp)检查库是否编译成功
进入_deps/lspcpp-build目录,确认是否生成了库文件(如liblspcpp.a或liblspcpp.so)。如果没有生成,说明库编译失败:- 运行
cmake --build . --verbose查看编译日志,排查依赖缺失(比如LspCpp可能依赖Boost库,需提前安装)。 - 检查LspCpp的编译选项,是否有开关控制库的生成。
- 运行
手动指定库路径(如果目标未正确导出)
如果库没有正确导出CMake目标,可手动指定头文件路径和库文件路径:target_include_directories(myApp PRIVATE ${LspCpp_SOURCE_DIR}/include) # 根据实际生成的库文件路径调整 target_link_libraries(myApp PRIVATE ${LspCpp_BINARY_DIR}/liblspcpp.a)
内容的提问来源于stack exchange,提问作者Jeppe
相关产品推荐
相关产品推荐

