我正在尝试使用CMake将共享库添加到我的项目中。对于C ++ 11,库是MsgPack。我必须做错事,因为没有一个例子here编译。我收到这个错误:
错误:'operator<<'不匹配(操作数类型为 'MsgPack :: Serializer'和'std :: unique_ptr') 串行器<< MsgPack__Factory(阵列(标准::移动(arrayWith3Elements)));
我的猜测是它与我的CMake语法有关。我保留编译库的文件系统树如下所示:
/home/I/direcytory/MsgPack/
├── include
│ ├── Container.h
│ ├── ContainerHeader.h
│ ├── Core.h
│ ├── Data.h
│ ├── Element.h
│ ├── Header.h
│ ├── MsgPack.h
│ ├── MsgPackSocket.h
│ ├── netLink.h
│ ├── Number.h
│ ├── Primitive.h
│ ├── Socket.h
│ ├── StreamManager.h
│ └── Utf8.h
├── libnetLink.a
└── libnetLink.so
在CMake中我这样做:
cmake_minimum_required(VERSION 3.0.2)
project(MyProject)
add_library(libnetLink SHARED IMPORTED)
SET_PROPERTY(TARGET libnetLink PROPERTY IMPORTED_LOCATION /home/I/Direcytory/MsgPack/libnetLink.so)
set(SOURCE_FILES main.cpp)
include_directories("/home/I/Direcytory/MsgPack/include")
target_link_libraries(MyProject libnetLink)
CMake没有报告任何错误,但我的程序不会编译。
值得注意的是,上述方法对我和其他库工作正常。这让我很困惑。