1.需求ios
[1].使用第三方動/靜太庫ide
[2].自己代碼部分編譯爲動/靜態庫測試
[3]多項目管理ui
原文轉自:http://blog.csdn.net/shuyong1999/article/details/7108563
spa
2.構建一個單獨的項目.net
[1]目的:這個項目將生成可執行文件,動態和靜態庫。orm
先在workspace(or anywhere you like)下創建項目的目錄(文件)結構:blog
workspaceci
|—— HelloWorld項目管理
|—— CMakeLists.txt
|—— include Hello.h
|—— src Hello.cpp, test.cpp, CMakeLists.txt
|—— build (CMake外部構建時的使用的目錄, 可任意指定)
[2]HelloWorld根目錄下的CMakeLists.txt
# 聲明CMake的最低要求版本 cmake_minimum_required(VERSION 2.8) # 定義項目(工程)名稱, # 同時定義瞭如下默認變量: # PROJECT_SOURCE_DIR 或 HELLO_SOURCE_DIR, 代指CMake開始構建的根目錄(一般是項目根目錄) # PROJECT_BINARY_DIR 或 HELLO_BINARY_DIR, 代指CMake的編譯目錄(即執行cmake命令的目錄) PROJECT(HELLO) # 添加參與編譯的子目錄 ADD_SUBDIRECTORY(src)
[3]Hello.h
#ifndef HELLO_H #define HELLO_H class Hello { public: Hello(){} void sayHello(); }; #endif
[4]Hello.cpp
#include <iostream> #include "Hello.h" void Hello::sayHello() { std::cout << "Hello CMake!" << std::endl; }
[5]test.cpp
#include "Hello.h" int main(int arg, char** argv) { Hello h; h.sayHello(); }
# 添加頭文件的查找目錄 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include) ## 生成各類目標(target)文件: 可執行文件、動態庫、靜態庫 # 指定可執行文件的輸出目錄,輸出到bin下面 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # 指定可執行文件名(hello)和相關源文件 ADD_EXECUTABLE(hello test.cpp Hello.cpp) # 指定庫文件輸出路徑 SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) # 生成動態庫 # 注意,前面已經使用target文件名hello,這裏不能再用。 ADD_LIBRARY(hello_so SHARED Hello.cpp) # 設置庫輸出名爲 hello => libhello.so SET_TARGET_PROPERTIES(hello_so PROPERTIES OUTPUT_NAME "hello") # 生成靜態庫 # 注意,前面已經使用target文件名hello,這裏不能再用。 ADD_LIBRARY(hello_a STATIC Hello.cpp) # 設置輸庫出名爲 hello => libhello.a SET_TARGET_PROPERTIES(hello_a PROPERTIES OUTPUT_NAME "hello")
最後,進入build目錄執行命令: cmake <項目根目錄>
若是執行cmake命令的目錄與項目根目錄相同,稱爲內部編譯,這時CMake生成的中間文件會與項目代碼混合,不推薦。
不然,稱爲外部編譯,全部中間文件會生成在執行cmake命令的目錄下。
cmake執行完後,會生成Makefile, 直接make, 會在項目下生成bin和lib目錄及目標文件。
一般咱們不須要生成全部類型的目標文件,構建時根據須要選擇。
3. 構建多個項目,使用外部項目提供的庫文件。
在前面的HelloWorld項目中,生成了lib文件,就能夠經過頭文件和lib文件發佈給其餘項目了。
咱們建立一個Test項目來使用HelloWorld的生成的庫,以下:
workspace
|—— HelloWorld
|—— Test
|—— CMakeLists.txt
|—— src main.cpp CMakeLists.txt
|—— build
(1)Test目錄下的CMakeLists.txt
2) main.cpp
(3) src下的CMakeLists.txt
最後,進入build目錄執行:
到bin目錄下測試可執行文件: