微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建一个共享库并在另一个项目中使用它

如何解决创建一个共享库并在另一个项目中使用它

我有一个具有以下结构的 C++ 项目:

.
├── include
│   ├── common.h
│   ├── os.h
│   ├── helper.h
│
├── lib
|   ├── libcrypto.so
│   ├── libssl.so
|   ├── ...
|
└── src
    ├── common.c
    ├── helper.c

现在我想为整个项目创建一个共享库或任何类型的库,以便我可以在其他一些完全独立于这个项目的 C++ 项目中包含 helper.h 头文件,并调用在这个头文件中声明的一些函数

>

我尝试使用以下 CMakeLists 文件制作共享库:

cmake_minimum_required(VERSION 3.0)

project(helperlib)

link_directories(lib)

file(GLOB SOURCES src/*.c)

include_directories(include)

add_library(${PROJECT_NAME} SHARED ${SOURCES})

install(TARGETS ${PROJECT_NAME} DESTINATION lib/${PROJECT_NAME})

file(GLOB HEADERS include/*.h)
install(FILES ${HEADERS} DESTINATION include/${PROJECT_NAME})

但是当我在另一个项目中使用 cmake 生成的 libhelperlib.so 文件并使用 #include "helper.h" 时,它给了我错误。 任何人都可以建议如何做到这一点。 谢谢!

编辑: 这是另一个项目的结构:

.
├── include
│   ├── constants.h
│   ├── datetime.h
│   ├── 
│
├── lib
|   ├── libhelperlib.so
│   ├── libboost_system.so
|   ├── liboost_system.a
|
└── src
    ├── constants.c
    ├── datetime.c
    ├── main.c

我使用的 CMakeLists.txt 是:

cmake_minimum_required(VERSION 3.0)

project(testProj)

include_directories(include)
link_directories(lib)

file(GLOB SOURCES src/*.c)
file(GLOB HEADERS include/*.h)

add_executable(testProj ${SOURCES} ${HEADERS})
target_link_libraries(testProj crypto helperlib boost_system)

当我在 main .c 中使用 #include "helper.h" 时,它会出现以下错误

Fatal error: helper.h: No such file or directory

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。