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

问题描述

我有一个具有以下结构的 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 (将#修改为@)