免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
cmake使用總結(jié)(轉(zhuǎn))

cmake使用總結(jié)(轉(zhuǎn))---工程主目錄CMakeList文件編寫

在linux 下進行開發(fā)很多人選擇編寫makefile 文件進行項目環(huán)境搭建,而makefile 文件依賴關(guān)系復雜,工作量很大,搞的人頭很大。采用自動化的項目構(gòu)建工具cmake 可以將程序員從復雜的makefile 文件中解脫出來。cmake 根據(jù)內(nèi)置的規(guī)則和語法來自動生成相關(guān)的makefile 文件進行編譯,同時還支持靜態(tài)庫和動態(tài)庫的構(gòu)建,我把工作中用到的東東總結(jié)在此,方便忘記時隨時查看,具體cmake的介紹和詳細語法還是參考官方文檔(http://www.cmake.org/),有一篇中文的cmake 實踐 寫的不錯,可以google一下。

     使用cmake 很簡單,只需要執(zhí)行cmake, make 兩個命令即可,用我工作中的一個工程舉例說明。

      假設當前的項目代碼在src 目錄。 src 下有子目錄:server, utility, lib, bin, build

      server -----  存放項目的主功能類文件

      utility  -----  存放項目要用到相關(guān)庫文件,便已成為庫文件存放到子目錄lib 中

      lib       -----  存放utility 生成的庫

      bin      -----  存放association 生成的二進制文件

      build   -----  編譯目錄,存放編譯生成的中間文件

    

      cmake 要求工程主目錄和所有存放源代碼子目錄下都要編寫CMakeLists.txt 文件,注意大小寫(cm 大寫,list中l(wèi) 大寫且落下s).

      src/CMakeLists.txt 文件如下:

      -------------------------------------------------------------------------------------------------------------

      #cmake file for project association                     #表示注釋 
      #author:>---double__song
      #created:>--2011/03/01

      CMAKE_MINIMUM_REQUIRED(VERSION 2.8)      #cmake 最低版本要求,低于2.6 構(gòu)建過程會被終止。 

      PROJECT(server_project)                                             #定義工程名稱

      MESSAGE(STATUS "Project: SERVER")               #打印相關(guān)消息消息 
      MESSAGE(STATUS "Project Directory: ${PROJECT_SOURCE_DIR}")

      SET(CMAKE_BUILE_TYPE DEBUG)                      #指定編譯類型


      SET(CMAKE_C_FLAGS_DEBUG "-g -Wall")          #指定編譯器 
      
      ADD_SUBDIRECTORY(utility)                              #添加子目錄 
      ADD_SUBDIRECTORY(server)
    -------------------------------------------------------------------------------------------------------------

      相關(guān)解釋:

      1. CMakeLists.txt 文件中不區(qū)分大小寫

      2. PROJECT(project_name)    定義工程名稱

          語法:project(projectname [cxx] [c] [java])

          可以指定工程采用的語言,選項分別表示:C++, C, java, 如不指定默認支持所有語言

      3. MESSAGE(STATUS, "Content")  打印相關(guān)消息

          輸出消息,供調(diào)試CMakeLists.txt 文件使用。

      4. SET(CMAKE_BUILE_TYPE DEBUG)  設置編譯類型debug 或者release。 debug 版會生成相關(guān)調(diào)試信息,可以使用GDB 進行 

          調(diào)試;release不會生成調(diào)試信息。當無法進行調(diào)試時查看此處是否設置為debug.

      5. SET(CMAKE_C_FLAGS_DEBUG "-g -Wall") 設置編譯器的類型

          CMAKE_C_FLAGS_DEBUG            ----  C 編譯器

          CMAKE_CXX_FLAGS_DEBUG        ----  C++ 編譯器

       6. ADD_SUBDIRECTORY(utility) 添加要編譯的子目錄

           為工程主目錄下的存放源代碼的子目錄使用該命令,各子目錄出現(xiàn)的順序隨意。

       如上便是工程server_project 主目錄src 下的CMakeLists.txt 文件,下一篇我們解釋子目錄utiltiy中的CMakeLists.txt 文件。

 

子目錄utility 下的CMakeLists.txt 文件如下:

--------------------------------------------------------------------------------------------------------------------
     #Cmake file for library utility.a
     #Author:       double__song
     #Created:     2011/3/3


     SET(SOURCE_FILES                                  #設置變量,表示所有的源文件
     ConfigParser.cpp
     StrUtility.cpp
     )


     INCLUDE_DIRECTORIES(                          #相關(guān)頭文件的目錄
     /usr/local/include
     ${PROJET_SOURCE_DIR}/utility
     )


    LINK_DIRECTORIES(                                  #相關(guān)庫文件的目錄
    /usr/local/lib

    )


    ADD_LIBRARY(association ${SOURCE_FILES})         #生成靜態(tài)鏈接庫libassociation.a

    TARGET_LINK_LIBRARY(association core)                #依賴的庫文件

    
    SET_TARGET_PROPERTIES(utility  PROPERTIES    #表示生成的執(zhí)行文件所在路徑
    RUNTIME_OUTPUT_DIRECTORY> "${PROJECT_SOURCE_DIR}/lib")

 

--------------------------------------------------------------------------------------------------------------------
    相關(guān)解釋:

    1. SET(SOURCE_FILES .....)  

    表示要編譯的源文件,所有的源文件都要羅列到此處。set 設置變量,變量名SOURCE_FILES自定義。

    2. INCLUDE_DIRECTORY(...)  

    include頭文件時搜索的所有目錄

    變量PROJECT_SOURCE_DIR 表示工程所在的路徑,系統(tǒng)默認的變量

    3. LINK_DIRECTORIES(...)

     庫文件存放的目錄,在程序連接庫文件的時候要再這些目錄下尋找對應的庫文件

    4. ADD_LIBRARY(...) 

     表示生成靜態(tài)鏈接庫libassociaiton.a,由${PROJECT_SOURCE_DIR}代表的文件生成。

     語法:ADD_LIBRARY(libname [SHARED|STATIC]

     SHARED 表示生成動態(tài)庫, STATIC表示生成靜態(tài)庫。

    5. TARGET_LINK_LIBRARY(association core) 

     表示庫association 依賴core庫文件

     6. SET_TARGET_PROPERTIES

     設置編譯的庫文件存放的目錄,還可用于其他屬性的設置。如不指定,

     生成的執(zhí)行文件在當前編譯目錄下的各子目錄下的build目錄下,好拗口!簡單一點:

     如指定在: ./src/lib 下

     不指定在: ./src/build/utility/build 目錄下

     生成的中間文件在./src/build/utilty/build 目錄下,不受該命令額影響

 

     子目錄server 下的CMakeLists.txt 文件:

      --------------------------------------------------------------------------------------------
     SET(SOURCE_FILES
     Gassociation.cpp
     ConfigurationHandler.cpp
     )

     INCLUDE_DIRECTORIES(

      /usr/local/include
      ${PROJECT_SOURCE_DIR}/utility
      ${PROJECT_SOURCE_DIR}/association
     )

     LINK_LIBRARIES(
     /usr/local/lib
     ${PROJECT_SOURCE_DIR}/lib
     )

     ADD_EXECUTABLE(server  ${SOURCE_FILES})

     TARGET_LINK_LIBRARIES(server
     utility

     )

     SET_TARGET_PROPERTIES(server  PROPERTIES    #表示生成的執(zhí)行文件所在路徑
     RUNTIME_OUTPUT_DIRECTORY  "${PROJECT_SOURCE_DIR}/bin")

     -------------------------------------------------------------------------------------------------------

     相關(guān)解釋:

     1. ADD_EXECUTABLE()     #指定要生成的執(zhí)行文件的名稱server

      其他用法同utilty/CMakeLists.txt

     2. SET_TARGET_PROPERTIES

      設置生成的執(zhí)行文件存放的路徑,

      注意:

      執(zhí)行文件server 依賴的子目錄utility 子目錄生成的靜態(tài)庫libutility.a,在指定的時候要寫成:
      TARGET_LINK_LIBRARIES(server   utility)

      而不能寫成:

      TARGET_LINK_LIBRARIES(server   libutility.a)

      否則編譯總會提示找不到libutility庫文件。

      但使用第三方的庫卻要指定成具體的庫名,如:libACE-6.0.0.so

      這一點很詭異,暫時還沒找到原因。

 

      完成對應的CMakeLists.txt 文件編寫后,便可以進行編譯了。

      編譯:

            進入 ./src/build

            執(zhí)行cmake ..

            make

 

       cmake 的使用很簡單,更高級的應用好比版本信息,打包,安裝等相關(guān)基本的應用后面會一一介紹,

      復雜的語法使用要參考官方文檔。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用 CMake 進行跨平臺軟件開發(fā)
CMake使用總結(jié)(1)
在 linux 下使用 CMake 構(gòu)建應用程序
CMake 基本教程
一起做RGB
Linux下CMake使用介紹
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服