[cmake] 使用静态库archive文件
来源:互联网 发布:西地那非粉50克淘宝 编辑:程序博客网 时间:2024/06/15 13:19
上一篇文章中,我们制作了一个archive文件,那接下来就是如何使用它了。首先来看一下程序的目录结构
t2├── build├── CMakeLists.txt└── src ├── CMakeLists.txt └── main.c
最外层的CMakeLists.txt中内容为
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)PROJECT(MA52103231)CMAKE_POLICY(SET CMP0002 OLD)#CMP0002 OLD的概念见下文CMAKE_POLICY(SET CMP0015 NEW)#CMP0015 NEW的概念见下文ADD_SUBDIRECTORY(src construct)依然如此简单,清晰
src/CMakeLists.txt中的内容为
AUX_SOURCE_DIRECTORY(. all_sources)#将当前目录(.)下的所有源文件(*.c *.cpp)加入到变量all_sources中ADD_EXECUTABLE(myexpect ${all_sources})#声明要用所有的源文件生成一个可执行程序myexpectINCLUDE_DIRECTORIES(../../t1/build/include)#定义了源文件中要使用的某些h文件的所在路径,这个路径使用了当前目录的前缀, #而当前目录就是当前CMakeLists.txt所在目录LINK_DIRECTORIES(../../t1/build/libstatic)#这个其实也是使用了当前目录的概念,不过需要使用CMP0015 NEW这个规则,否则,我还真找不到当前目录是哪个TARGET_LINK_LIBRARIES(myexpect core)#定义我们的可执行程序要链接的库,此处是core(默认是动态库,不过目标文件里面只有静态库,所以就链接静态库了,假设 #动态库和静态库都存在,那就指定具体的名字,比如libcore.a 或者 libcore.so)ADD_EXECUTABLE(myexpect ${all_sources})#此处再次使用了这句话,是为了解决cmake的一个问题(没有这句的LINK_DIRECTORIES这句话会不起作用)。同时,如果不用时 #规则CMP0002 OLD的话,在build目录执行cmkae ..时会因为有两句同样的ADD_EXECUTABLE而停止工作main.c中的内容
#include <core.h>int main(int argc, char** argv){core_help();return 0;}很简单
在build目录执行cmake .. 后再执行make,build目录会生成如下文件
CMakeCache.txt CMakeFiles cmake_install.cmake construct Makefile我们的可执行程序就在construct目录中了
CMakeFiles cmake_install.cmake Makefile myexpect执行它得到
root@hu-virtual-machine:/home/hu/project/test_cmake/t2/build/construct# ./myexpect my help
阅读全文
0 0
- [cmake] 使用静态库archive文件
- [cmake] 制作一个静态库archive
- 使用CMake编译跨平台静态库
- 使用CMake编译跨平台静态库
- 静态库Archive
- CMake静态库
- cmake连接静态库
- CMake 添加头文件目录,链接动态、静态库
- cmake 添加头文件目录,链接动态、静态库
- cmake 添加头文件目录,链接动态、静态库
- cmake 添加头文件目录,链接动态、静态库
- 《CMake实践》笔记三:构建静态库与动态库 及 如何使用外部共享库和头文件
- cmake --使用外部库和头文件
- CMake: 不使用库组织工程文件
- 使用cmake生成基于静态库的动态链接库
- 使用CMake编译freeglut-3.0.0的静态库
- HelloWorld CMake Demo 03:CMake中构建静态库与动态库及其使用
- HelloWorld CMake CMake中构建静态库与动态库及其使用
- Linux学习笔记一(虚拟机的常用操作)
- python学习笔记(4)——字典与集合
- 仿QQ空间评论随软键盘弹出和收回一个输入布局
- LoadImageAsyncTask
- Linux简介
- [cmake] 使用静态库archive文件
- python学习笔记(一)
- Hdu 1078
- CMD命令整理
- toj4168 I-The brute force problem
- 【spring】IOC
- <mvc:annotation-driven>
- caffe win10 vs13 lenet训练 cpu
- LINUX系统中断处理结构及中断函数的实现