一个简单的cmake例子

一个简单的cmake例子CMakeLists.txt,生成动态库文件,可以指定发布目录。

尚不支持:

  1、交叉编译环境配置

  2、添加依赖库

 1 #在当前目录新建一个build目录,然后cd build;cmake ..
 2 #这样的好处是,可以将cmake生成的内容,和源码文件分离
 3
 4 #定义好版本需求
 5 cmake_minimum_required (VERSION 2.6)
 6 #工程名字
 7 project (Libtree)
 8 #编译结果发布路径
 9 set ( CMAKE_INSTALL_PREFIX ./_install)
10
11 ## The version number.
12 set (Tutorial_VERSION_MAJOR 1)
13 set (Tutorial_VERSION_MINOR 0)
14
15 #设置源码文件,分别是avl.c rb.c splay.c
16 set (LIBHELLO_SRC avl.c rb.c splay.c)
17
18 #动态库
19 ADD_LIBRARY (tree SHARED ${LIBHELLO_SRC})
20 #静态库
21 ADD_LIBRARY (tree_static STATIC ${LIBHELLO_SRC})
22
23 SET_TARGET_PROPERTIES (tree_static PROPERTIES OUTPUT_NAME "tree")
24 GET_TARGET_PROPERTY (OUTPUT_VALUE tree_static OUTPUT_NAME)
25 MESSAGE (STATUS "This is the tree_static OUTPUT_NAME: " ${OUTPUT_VALUE})
26
27 # cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库,
28 # 因此,在构建libtree.a时,就会清理掉libtree.so.
29 # 为了回避这个问题,比如再次使用SET_TARGET_PROPERTIES定义 CLEAN_DIRECT_OUTPUT属性。
30 SET_TARGET_PROPERTIES (tree_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
31 SET_TARGET_PROPERTIES (tree PROPERTIES CLEAN_DIRECT_OUTPUT 1)
32
33 # 按照规则,动态库是应该包含一个版本号的,
34 # VERSION指代动态库版本,SOVERSION指代API版本。
35 SET_TARGET_PROPERTIES (tree PROPERTIES VERSION ${Tutorial_VERSION_MAJOR}.${Tutorial_VERSION_MINOR} SOVERSION 1)
36  38 #在本例中我们将tree的共享库安装到<prefix>/lib目录;
39 # 将libtree.h安装<prefix>/include/tree目录。
40
41 INSTALL (TARGETS tree tree_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
42 INSTALL (FILES libtree.h DESTINATION include/tree)

原文地址:https://www.cnblogs.com/djw316/p/10560874.html

时间: 2024-10-31 02:29:53

一个简单的cmake例子的相关文章

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

一个简单的KVO例子

一个简单的KVO例子. 两个界面,第一个界面显示名字和配偶(spouse)名字,第二个界面显示修改名字和配偶名字,返回时,将看到第一个界面的名字显示发生改变. 首先定义一个person类作为model. #import <Foundation/Foundation.h> @interface Person : NSObject @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) NSString

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的.然后如果这段时间线程B拿到锁Y,也sleep()一段时间的话,那么等到两个线程都醒过来的话,那么将互相等待对方释放锁资源而僵持下去,陷入死锁.flag的作用就是让A和B获得不同的锁. public class TestDeadLock { public void run() { MyThread mt = new MyThread(); ne

编写一个简单的jdbc例子程序

1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class Base { 10 11 public static void main(String[] args) th

一个简单的小例子让你明白c#中的委托-终于懂了!

模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事件委托给多个嘉宾去处理.因此在Host 类定义事件,在Guests类中定义事件的响应方法.通过多番委托的"+="将响应方法添加到事件列表中,最终 Host 类将触发这个事件.实现过程如下: 代码其实很少下面贴出来所有代码: QuestionArgs.cs view plaincopy to

Servlet学习教程(三)---- 一个简单的Servlet例子

我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置Default output folder 为Servlet/WebContent/WEB-INF/classes 第二,创建一个包,包名为Servlet,然后创建一个类名为WelcomeServlet类.(Servlet类当然缺少不了Servlet容器,请注意你的开发软件是否已经集成Servlet容

一个简单的springmvc例子 入门

一直是从事棋牌游戏,平常用的东西 大多数只是使用一些javase的一些 api对spring 这方面 用到的比较少,每次学了都忘,始终记不住.为了 更轻松学习springboot,从新学习了spring,学到springmvc记录一下学习过程,先从一个简单的例子入门. 首先说下springmvc:和Struts2 都是一个mvc的框架 属于spring 的后续产品 springmvc和Struts2的对比: 原文地址:https://www.cnblogs.com/920913cheng/p/1

一个简单的SignalR例子

本文介绍如何使用SignalR的Hub制作一个简单的点赞页面.不同浏览器(或者不同窗口)打开同一个页面,在任何一个页面点赞,所有页面同时更新点赞数. 1.使用Visual Studio Community 2013新建一个Web项目,选择空白模板. 2.使用NugGet安装SignalR. 3.添加Startup.cs. 代码如下. namespace SignalRDemo { public class Startup { public void Configuration(IAppBuild

一个简单的死锁例子

/** * 一个简单的死锁类 * 当DeadLock类的对象flag==1时(td1),先锁定o1,睡眠500毫秒 * 而td1在睡眠的时候另一个flag==0的对象(td2)线程启动,先锁定o2,睡眠500毫秒 * td1睡眠结束后需要锁定o2才能继续执行,而此时o2已被td2锁定: * td2睡眠结束后需要锁定o1才能继续执行,而此时o1已被td1锁定: * td1.td2相互等待,都需要得到对方锁定的资源才能继续执行,从而死锁. */ public class DeadLock imple