CMake入门使用(三)动态库、静态库的编译及使用
来源:互联网 发布:网络视频节目许可证 编辑:程序博客网 时间:2024/06/03 17:53
一、动态库、静态库的编译
首先新建个CMakeLists.txt
敲入
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)ADD_SUBDIRECTORY(src/shared)ADD_SUBDIRECTORY(src/static)
然后在项目目录下创建src文件夹,在src下再创建shared和static文件夹
动态库
在src/shared下创建include、src、CMakeLists.txt
include下创建头文件shared.h
#include <iostream>void sayShared();
src下创建shared.h的实现shared.cpp
#include <shared.h>void sayShared(){ std::cout << "Shared!" << std::endl;}
然后在CMakeLists.txt下敲入
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)SET(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/shared/src SHARED_SRC)INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src/shared/include")ADD_LIBRARY(shared SHARED ${SHARED_SRC})
静态库
在src/static下创建include、src、CMakeLists.txt
include下创建头文件static.h
#include <iostream>void sayStatic();
src下创建static.h的实现static.cpp
#include <static.h>void sayStatic(){ std::cout << "Static!" << std::endl;}
然后在CMakeLists.txt下敲入
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)SET(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/static/src STATIC_SRC)INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src/static/include")ADD_LIBRARY(static STATIC ${STATIC_SRC})
新建脚本build.sh
#!/bin/bashdir="./build"[ -d "$dir" ] && rm -rf "$dir"mkdir "$dir"cd "$dir"cmake ..make
准备工作做完了,目录如下
然后运行
./build.sh
就可以编译动、静态库
在build/lib下就会出现编译好的库文件
二、动、静态库的使用
对上述工程做个改动即可
修改根目录下的CMakeLists.txt,添加使用的目录
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)ADD_SUBDIRECTORY(src/shared)ADD_SUBDIRECTORY(src/static)ADD_SUBDIRECTORY(example)
新建example,example下创建CMakeLists.txt和main.cpp
CMakeLists.txt敲入
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin")AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/example MAIN_SRC)INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src/shared/include")INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src/static/include")LINK_DIRECTORIES("${PROJECT_BINARY_DIR}/lib")ADD_EXECUTABLE(hello ${MAIN_SRC})TARGET_LINK_LIBRARIES(hello libshared.so)TARGET_LINK_LIBRARIES(hello libstatic.a)
main.cpp敲入
#include <shared.h>#include <static.h>int main(){ sayShared(); sayStatic(); return 0;}
文件目录如下图所示
然后运行编译脚本
./build.sh
执行bin下的hello就ok了
完整工程上传至git上https://github.com/fujikoli/CMakeExamples
阅读全文
0 0
- CMake入门使用(三)动态库、静态库的编译及使用
- 使用CMake编译跨平台静态库
- 使用CMake编译跨平台静态库
- 使用cmake生成基于静态库的动态链接库
- 使用CMake编译freeglut-3.0.0的静态库
- 《CMake实践》笔记三:构建静态库与动态库 及 如何使用外部共享库和头文件
- windows下使用cmake和ndk编译android所用动态库.so和静态库.a
- CMake 编译静态库和动态库
- 用cmake 编译 xcode用的clucene静态库(三)
- linux静态库和动态库编译及使用
- linux静态库和动态库编译及使用
- linux静态库和动态库编译及使用
- 关于cmake使用(使用cmake编译assimp库)
- cmake 入门编程之编译一个静态库或者动态库
- C++动态库和静态库的特点及编译使用
- 如何使用cmake生成基于静态库的动态链接库
- 关于android studio使用cmake 编写jni调用静态库、动态库的方式
- HelloWorld CMake Demo 03:CMake中构建静态库与动态库及其使用
- 神经网络之激活函数(sigmoid、tanh、ReLU)
- Java集合:HashMap源码剖析
- 【转】 设置Ubuntu上的MySQL可以远程访问
- Win10x64下Vbox安装Ubuntux64共享文件夹报错:/sbin/mount.vboxsf: mounting failed with the error: Protocol error
- 文字编码系统笔记(ASCII、UNICODE、UTF-8、ANSI)
- CMake入门使用(三)动态库、静态库的编译及使用
- 【第七篇blog】专题:高精度计算<上>
- Android学习随笔(15)------网络技术
- 新手对于是否能学好seo的疑惑
- 修改Tomcat服务器Response Header中server内容
- Python系统学习系列——linux读书笔记(2)
- MANIFEST.MF说明
- 探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
- Java 修饰符(Modifier)声明顺序