makefile - 将 snappy-c 添加到 c++ 项目
问题描述
我第一次使用 cmake 并试图将snappy-c添加到我的 c++ 项目中。我在其 repo 中使用 Makefile 编译了 snappy-c 库。我希望将 snappy.o 添加到我的 CMakeLists.txt 将允许我使用 snappy 库。不幸的是,这给了我一个未定义的参考错误。如何正确地将 snappy-c 添加到我的 c++ 项目中?
我的目录结构是
server-side
├── src
│── common_main.cpp
├── include
└── libs/snappy-c
这是我的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.5)
add_definitions(-std=c++11)
# include public headers
include_directories("include" ${CMAKE_CURRENT_SOURCE_DIR}/libs/snappy-c)
# recursively add .cpp files to the SOURCES variable
file(GLOB_RECURSE SOURCES "src/*.cpp" main.cpp)
# create executable using SOURCES
add_executable(common-main ${SOURCES})
target_link_libraries(
common-main
${CMAKE_CURRENT_SOURCE_DIR}/libs/snappy-c/snappy.o
)
find_library(LIBRT rt)
if(LIBRT)
target_link_libraries(common-main ${LIBRT})
endif()
我得到未定义参考的代码是
#include <iostream>
#include "snappy.h"
int main(){
struct snappy_env env;
snappy_init_env(&env);
}
运行make VERBOSE=1
时,我得到以下输出
cd /home/kakashi/Workbench/project/build/server-side && /usr/bin/cmake -E cmake_link_script CMakeFiles/common-main.dir/link.txt --verbose=1
/usr/bin/c++ -pthread CMakeFiles/common-main.dir/src/common_main.cpp.o CMakeFiles/common-main.dir/src/server_service.cpp.o CMakeFiles/common-main.dir/src/service_manager.cpp.o -o common-main ../../server-side/libs/snappy.o /usr/lib/x86_64-linux-gnu/librt.so
CMakeFiles/common-main.dir/src/common_main.cpp.o: In function `main':
common_main.cpp:(.text+0x399): undefined reference to `snappy_init_env(snappy_env*)'
collect2: error: ld returned 1 exit status
server-side/CMakeFiles/common-main.dir/build.make:200: recipe for target 'server-side/common-main' failed
make[2]: *** [server-side/common-main] Error 1
.Makefile:83: recipe for target 'all' failed
.
.
.
.
解决方案
推荐阅读
- android - AOSP增量OTA申请失败
- firebase - 在 Flutter 中禁用 Firestore 上的缓存
- playwright - playwright-python - `handleSIGTERM=False` 导致 UnhandledPromiseRejectionWarning 并关闭浏览器
- sql - 雪花有条件地从表中删除
- node.js - Ghostscript 识别和裁剪区域?可能的?
- python - python conda环境安装包顺序
- php - 如何为 php 7.2 设置 phpredis
- reactjs - 带有 React 钩子的简单表单
- python - 熊猫替换不产生所需的输出
- python-3.x - Pandas 按组垂直合并值