CMake3:添加一个库
生活随笔
收集整理的這篇文章主要介紹了
CMake3:添加一个库
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.添加庫(kù)
現(xiàn)在可以考慮為我們的項(xiàng)目添加一個(gè)庫(kù),這個(gè)庫(kù)的功能是計(jì)算一個(gè)數(shù)的平方根。可應(yīng)用程序?qū)?yīng)用這個(gè)庫(kù),而不是之前由編譯器提供的平方根函數(shù)計(jì)算平方根。本篇博客,我們將把這個(gè)庫(kù)放在一個(gè)叫‘MathFunction’的子目錄中。并在CMake中使用下述代碼進(jìn)行連接: add_library(MathFunctions mysqrt.cxx) 源文件mysqrt.c提供了與編譯器中具有相似功能的平方根函數(shù),mysqrt()。為了充分利用這個(gè)新庫(kù),我們?cè)陧攲覥MakeLists.txt中添加一個(gè)Add_subdirectory調(diào)用,組建這個(gè)庫(kù)。我們也添加了另外一個(gè)包含目錄,所以MathFunctions庫(kù)/MathFunctions.h頭文件能夠在函數(shù)原型中找到。最后一個(gè)改變就是將這個(gè)新庫(kù)添加到可執(zhí)行程序中。 在CMake2的CMakeLists.txt基礎(chǔ)上最后幾行代碼變?yōu)?#xff1a; include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) # add the executable add_executable (Tutorial tutorial.c) target_link_libraries (Tutorial MathFunctions)下面考慮制作MathFunctions庫(kù)。可能這個(gè)環(huán)節(jié)看起來一點(diǎn)都沒有必要。但是,在實(shí)際的大項(xiàng)目中我們經(jīng)常依賴第三方較大型的庫(kù)。所以首先要考慮的就是如何將庫(kù)選項(xiàng)添加到頂層文件CMakeLists.txt中。 # should we use our own math functions? option (USE_MYMATH "Use tutorial provided math implementation" ON) 這條代碼的作用是:CMake GUI將會(huì)出現(xiàn)一個(gè)默認(rèn)值為‘ON’的選項(xiàng),用戶可以根據(jù)實(shí)際情況進(jìn)行選擇。這個(gè)設(shè)置存儲(chǔ)在緩存中,所以對(duì)于這個(gè)項(xiàng)目,用戶不需要每次運(yùn)行CMake時(shí)重新設(shè)置。
下一個(gè)改變就是有條件地組建和連接MathFunctions庫(kù)。完成這個(gè)功能,我們需要在CMakeLists.txt中做一下的更改: # add the MathFunctions library? # if (USE_MYMATH)include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")add_subdirectory (MathFunctions)set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH)# add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial ${EXTRA_LIBS})上面代碼的含義是: 我們使用 USE_MYMATH 決定 MathFunctions 是否被編譯和使用。 注意:我們使用變量‘EXTRA_LIBS’收集所有可供選擇的庫(kù)文件,進(jìn)而將他們鏈接到可執(zhí)行文件中。 這種方法對(duì)于一個(gè)擁有很多可選組建的大型程序而言是很常見的。 變量 USE_MYMATH 在源文件中也會(huì)被用到,所以需要的頭文件中進(jìn)行宏定義: This is provided from CMake to the source code through the TutorialConfig.h.in configured file by adding the following line to it: #cmakedefine USE_MYMATH //CMakeConfig.h.in=============================================================================== 文件結(jié)構(gòu)如下:
- ~/MathFunctions/ CMakeLists.txt?
- ~/MathFunctions/?MathFunctions.h
- ~/MathFunctions/?MathFunctions.c
- ~/CMakeLists.txt
- ~/Tutorial.c
- ~/TutorialConfig.h.in
總結(jié)
以上是生活随笔為你收集整理的CMake3:添加一个库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CMake2:版本号配置与头文件生成
- 下一篇: 把exe里面的资源通通取出来