一個簡單的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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM