CMAKE编译动态库不依赖系统环境

36 篇文章 0 订阅
23 篇文章 1 订阅

做c++开发,要考虑到项目移植问题,很多时候依赖库多了,装的很烦心,为了实现不依赖于系统环境,将编译好的,lib与.h放至编译库,进行编译,下面以一个简单的例子进行说明。
本例子中,src下的cpp文件依赖于opencv2.4.10,glib0.4.0,gflags2.2。
具体的文件目录如下:

├── CMakeLists.txt
├── inc
│   ├── amcomdef.h
│   ├── arcsoft_face_sdk.h
│   ├── asvloffscreen.h
│   ├── include
│   │   ├── gflags
│   │   ├── glog
│   │   ├── opencv
│   │   └── opencv2
│   ├── liveless.h
│   └── merror.h
├── linux_so
│   ├── gflaglib
│   │   ├── libgflags_nothreads.so -> libgflags_nothreads.so.2.2
│   │   ├── libgflags_nothreads.so.2.2 -> libgflags_nothreads.so.2.2.2
│   │   ├── libgflags_nothreads.so.2.2.2
│   │   ├── libgflags.so -> libgflags.so.2.2
│   │   ├── libgflags.so.2.2 -> libgflags.so.2.2.2
│   │   └── libgflags.so.2.2.2
│   ├── gloglib
│   │   ├── libglog.a
│   │   ├── libglog.la
│   │   ├── libglog.so -> libglog.so.0.0.0
│   │   ├── libglog.so.0 -> libglog.so.0.0.0
│   │   ├── libglog.so.0.0.0
│   │   └── pkgconfig
│   ├── libarcsoft_face_engine.so
│   ├── libarcsoft_face.so
│   ├── libliveless.so
│   └── opencvlib
│       ├── libopencv_core.so -> libopencv_core.so.2.4
│       ├── libopencv_core.so.2.4 -> libopencv_core.so.2.4.10
│       ├── libopencv_core.so.2.4.10
│       ├── libopencv_highgui.so -> libopencv_highgui.so.2.4
│       ├── libopencv_highgui.so.2.4 -> libopencv_highgui.so.2.4.10
│       ├── libopencv_highgui.so.2.4.10
│       ├── libopencv_imgproc.so -> libopencv_imgproc.so.2.4
│       ├── libopencv_imgproc.so.2.4 -> libopencv_imgproc.so.2.4.10
│       └── libopencv_imgproc.so.2.4.10
└── src
    └── liveless.cpp

从目录中可以看到,inc/include/下放了opencv2.4.10,glib0.4.0,gflags2.2的头文件,linux_so/gflaglib,linux_so/gloglib,linux_so/opencvlib分别存放这动态库(静态库)文件。
cmake 文件如下:

cmake_minimum_required(VERSION 2.8.7)
if(POLICY CMP0046)
  cmake_policy(SET CMP0046 NEW)
endif()
if(POLICY CMP0054)
  cmake_policy(SET CMP0054 NEW)
endif()


project(liveless)

add_compile_options(-std=c++11 -fpermissive)

include_directories(${PROJECT_SOURCE_DIR}/inc ${PROJECT_SOURCE_DIR}/inc/include)
link_directories(${PROJECT_SOURCE_DIR}/linux_so ${PROJECT_SOURCE_DIR}/linux_so/gloglib ${PROJECT_SOURCE_DIR}/linux_so/opencvlib ${PROJECT_SOURCE_DIR}/linux_so/gflaglib) 
# add_definitions(${PROJECT_SOURCE_DIR}/)

aux_source_directory(${PROJECT_SOURCE_DIR}/src  SRC_FILE)

#add_executable(${PROJECT_NAME}  ${SRC_FILE})
add_library(${PROJECT_NAME} SHARED ${SRC_FILE})

target_link_libraries(${PROJECT_NAME}  -larcsoft_face -larcsoft_face_engine  -lopencv_core -lopencv_highgui -lopencv_imgproc -lglog -lgflags -lpthread)

INSTALL(TARGETS  liveless
LIBRARY DESTINATION linux_so
ARCHIVE DESTINATION linux_so)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值