欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

cmake添加一個庫的實現(xiàn)步驟

 更新時間:2023年06月12日 14:45:52   作者:波雅_漢庫克  
本文主要介紹了cmake添加一個庫的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

項目格式

Step2

  • mathFunctions/CMakeLists.txt mysqrt.cxx MathFunctions.h
  • CMakeList.txt
  • tutorial.cxx
  • Tutorial.h.in

cmake基本語法

設置編譯器

set (CMAKE_C_COMPILER "D:/Program Files/LLVM/bin/gcc")
set (CMAKE_CXX_COMPILER "D:/Program Files/LLVM/bin/g++")

CMAKE_C_COMPILER C語言編譯器,CMAKE_CXX_COMPILER C++編譯器。

添加庫

add_subdirectory(MathFunctions)

添加的MathFunctions就是文件夾的名字也可以理解為庫的名字

鏈接庫

target_link_libraries(Tutorial PUBLIC MathFunctions)

第一個參數(shù)是生成的可執(zhí)行文件,中間的是公有的,第三個參數(shù)是庫的名字.

添加庫的頭文件

target_include_directories(Tutorial PUBLIC ${PROJECT_SOURCE_DIR}/MathFunctions ${PROJECT_BINARY_DIR})

第一個參數(shù)是生成的可執(zhí)行文件,中間的是公有的,第三個參數(shù)是庫的路徑,應該說后面的參數(shù)都是路徑.

其中:

${PROJECT_SOURCE_DIR} 這個變量是主Cmake文件的變量

${PROJECT_BINARY_DIR}這個變量是cmake -B生成的路徑的變量

cmake打印字符串

message("hello world")
message(${PROJECT_SOURCE_DIR}/MathFunctions)

這個就是打印出來的字符串.

庫的cmake文件

這個cmake文件不需要寫那么多公共命令. 

cmake生辰庫

add_library(MathFunctions mysqrt.cxx)

這行代碼就是把cxx文件添加到庫中

mian函數(shù)中使用

添加頭文件

#include <MathFunctions.h>

可以直接使用尖括號,因為cmake已經(jīng)把頭文件添加到可執(zhí)行文件中了.

然后直接調(diào)用函數(shù)即可.

讓庫成為可選的

cmake基本語法

設置option變量

option(USE_MYMATH "Use tutorial provided math implementation" ON)

設置一個USE_MATH的變量,第二個參數(shù)是說明字符串,第三個是啟動或者關閉 ON是啟動,OFF是關閉.

注意:option這個設置變量一定要在configure_file(TutorialConfig.h.in TutorialConfig.h)這行前面才可以,要不然option設置的不起作用.

cmake設置條件鏈接庫

if (USE_MYMATH)
    add_subdirectory(MathFunctions)
    list(APPEND EXTRA_LIBS MathFunctions)
    list(APPEND EXTRA_INCLUDES ${PROJECT_SOURCE_DIR})
endif()

意思是如果USE_MYMATH為ON才可以鏈接自己的庫

其中強調(diào)兩行代碼就是list的代碼

  • list(APPEND EXTRA_LIBS MathFunctions)
  • list(APPEND EXTRA_INCLUDES ${PROJECT_SOURCE_DIR})

這兩行代碼你可以理解為依賴的庫聲明成一個變量列表,例如EXTRA_LIBS這個變量就是存儲的MathFunctions這個庫這里只有一個demo如果要鏈接十個八個只要在list后面空格添加就行,

EXTRA_INCLUDES這個也是同理,目的也是為了下面添加鏈接庫和添加頭文件的時候簡單一點.

鏈接庫

target_link_libraries(Tutorial PUBLIC ${EXTRA_LIBS})

這里就用到EXTRA_LIBS 這個列表

添加頭文件

target_include_directories(Tutorial PUBLIC 
                            ${EXTRA_INCLUDES}
                            ${PROJECT_BINARY_DIR})

這里就用到EXTRA_INCLUDES這個列表

修改cmake配置文件

#cmakedefine USE_MYMATH

添加一行這個代碼

USE_MYMATH這個變量就是對應一開始的option設置的變量

如果option設置USE_MYMATH為ON, cmake配置文件生成的頭文件就會定義USE_MYMATH

這個不是自己寫的是cmake自己生成的. 

修改引用的源碼

 

更新鏈接庫的過程

如果每次主cmake文件每次鏈接一個庫都要target_include_directories一個庫名字就有點重復,所以可以修改cmake庫來實現(xiàn)當鏈接這個庫的時候就包含頭文件了。

第一步就是修改庫的cmake文件:

add_library(MathFunctions mysqrt.cxx)
target_include_directories(MathFunctions
    INTERFACE
    ${CMAKE_CURRENT_SOURCE_DIR})

第一行代碼是添加庫名字,第二行是添加庫的頭文件,第一個參數(shù)是庫的名字,

INTERFACE:第二個參數(shù)意思是當鏈接這個庫的時候就要包含include第三個參數(shù)的頭文件,但是自己的庫不使用頭文件,

還有一個PUBLIC:

PUBLIC:這個的意思是不光鏈接這個庫的需要使用庫頭文件,自己也是用。一般這個使用的比較多。

第三個參數(shù)就是頭文件的路徑,

${CMAE_CURRENT_SOURCE_DIR}

這個變量是什么意思了?這個意思是當前cmake文件的目錄,這個變量和${PROJECT_SOURCE_DIR}這個變量比較相似,這個是指定項目當前的路徑。

主cmake文件就可以把上面鏈接MathFunctions文件可以刪除了。

到此這篇關于cmake添加一個庫的實現(xiàn)步驟的文章就介紹到這了,更多相關cmake添加庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++文件關鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索

    C++文件關鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索

    這篇文章主要為大家介紹了C++文件關鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • C++ 處理中文符號實例詳解

    C++ 處理中文符號實例詳解

    這篇文章主要介紹了C++ 處理中文符號實例詳解的相關資料,需要的朋友可以參考下
    2017-01-01
  • C++ Struct結(jié)構(gòu)體用法淺析

    C++ Struct結(jié)構(gòu)體用法淺析

    前邊我們所定義的類,均是使用struct關鍵字來定義,但是C++中真正用于定義類的關鍵字為class,因為要C++兼容C,所以保留struct關鍵字,struct與class的用法完全相同
    2023-03-03
  • 使用remalloc的注意事項說明(必看篇)

    使用remalloc的注意事項說明(必看篇)

    下面小編就為大家?guī)硪黄褂胷emalloc的注意事項說明(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • C/C++實現(xiàn)目錄監(jiān)視器的方法詳解

    C/C++實現(xiàn)目錄監(jiān)視器的方法詳解

    這篇文章主要介紹了C/C++ 實現(xiàn)目錄監(jiān)視器的方法,然后網(wǎng)上查到的基本就有三種方法,使用FindFirstChangeNotification等系列函數(shù),使用ReadDirectoryChangesW函數(shù)和使用change journals,本文使用了第二種方式來實現(xiàn)一個目錄監(jiān)視,需要的朋友可以參考下
    2024-04-04
  • VS2019+MPI配置過程的實現(xiàn)步驟

    VS2019+MPI配置過程的實現(xiàn)步驟

    本文介紹了在VS2019上配置MPI,包括下載和安裝MPI、創(chuàng)建項目、配置屬性、導入頭文件和庫文件、添加依賴項等步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 如何優(yōu)雅地使用c語言編寫爬蟲

    如何優(yōu)雅地使用c語言編寫爬蟲

    如何優(yōu)雅地使用c語言編寫爬蟲,本文介紹cspider爬蟲庫,這個cspider爬蟲庫的使命在于,我們能夠使用c語言,依然能夠優(yōu)雅地編寫爬蟲程序,需要的朋友可以參考下
    2015-12-12
  • 如何用C寫一個web服務器之CGI協(xié)議

    如何用C寫一個web服務器之CGI協(xié)議

    本文主要介紹了如何用C寫一個web服務器之CGI協(xié)議,對C語言和web感興趣的同學,可以詳細看下,并且試驗一下。
    2021-05-05
  • Android App仿微信界面切換時Tab圖標變色效果的制作方法

    Android App仿微信界面切換時Tab圖標變色效果的制作方法

    這篇文章主要介紹了Android App仿微信界面切換時Tab圖標變色效果的制作方法,重點講解了圖標的繪制技巧,需要的朋友可以參考下
    2016-04-04
  • VC雙畫布消除屏幕閃爍實例詳解

    VC雙畫布消除屏幕閃爍實例詳解

    這篇文章主要介紹了VC雙畫布消除屏幕閃爍實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論