cmake,gtest單元測試程式

2022-02-23 19:51:50 字數 3056 閱讀 5767

參考:

project (hello)
set(src_list main.c)
message(status "this is binary dir " $)
message(status "this is source dir " $)
add_executable(hello  $)
以下**: 淺顯易懂,不過不是工程使用方法,後面補實際應用。
cmake是乙個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project檔案,能測試編譯器所支援的c++特性,類似unix下的automake。

cmake 使用方法

cmake的所有的語句都寫在乙個叫:cmakelists.txt的檔案中。當cmakelists.txt檔案確定後,可以用ccmake命令對相關 的變數值進行配置。這個命令必須指向cmakelists.txt所在的目錄。配置完成之後,應用cmake命令生成相應的makefile(在unix like系統下)或者 project檔案(指定用window下的相應程式設計工具編譯時)。

其基本操作流程為:

[html]view plain

copy

$> ccmake directory  

$> cmake directory  

$> make 

其中directory為cmakelist.txt所在目錄;

cmake的執行就是這麼簡單,其難點在於如何編寫cmakelists.txt檔案,下面結合例子簡單介紹cmakelists.txt的編寫,看下面這個cmakelists.txt

[html]view plain

copy

#project name  

project(test_math)  

#head file path  

include_directories(  

include  

)  

#source directory  

aux_source_directory(src dir_srcs)  

#set environment variable  

set(test_math  

$  

)  

#set extern libraries  

set(libraries  

libm.so  

)  

#add executable file  

add_executable(../bin/bin $)  

#add link library  

target_link_libraries(../bin/bin $)  

或者用下面這個cmakelists.txt

[html]view plain

copy

#project name  

project(test_math)  

#head file path  

include_directories(  

include  

)  

#source directory  

aux_source_directory(src dir_srcs)  

#set environment variable  

set(test_math  

$  

)  

#add executable file  

add_executable(../bin/bin $)  

#add link library  

target_link_libraries(../bin/bin m) 

這是乙個測試數學函式的程式的cmakelists.txt,"#"後面為注釋的內容,cmake的命令全部為大寫

第2行指定生成的工程名為test_math

第4行指定頭檔案目錄為include

第8行指定源檔案目錄為src,並將其賦值給環境變數dir_srcs

第10行設定環境變數test_math的值為環境變數dir_srcs的值,此處用於顯示如何用環境變數對環境變數進行賦值

第14行將數學函式庫賦值給環境變數libraries,當然,可以不用這個環境變數,而在後面直接使用該庫名

第18行用於指定生成檔案,將環境變數test_math目錄下的所有檔案編譯生成../bin目錄下的可執行檔案bin

第20行指定../bin/bin執行時的鏈結庫為環境變數libraries的值-libm.so

下面給出原始檔

/src/main.c:

[html]view plain

copy

#include

#include"../include/a.h"  

int main()  

/src/a.c

[html]view plain

copy

#include"../include/a.h"  

double get_sqrt(double var1)  

/include/a.h

[html]view plain

copy

#ifndef  a_file_header_inc 

[html]view plain

copy

#define  a_file_header_inc  

#include

double get_sqrt(double var1);  

#endif  

將cmakelists.txt放在當前目錄下,執行cmakelists.txt

[html]view plain

copy

$> cmake .  

$> make 

即可生成可執行檔案,在目錄/bin下的bin檔案,好了執行看其效果是否和所想一樣。

單元測試 單元測試文章收藏

前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...

單元測試之Django單元測試

每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...

單元測試(三) 建立多執行緒單元測試

junit本是不支援多執行緒的,乙個單元測試case主程序跑完,其他new出來的執行緒都會gg思密達。此篇mark乙份在junit中執行多執行緒的方法。net.sourceforge.groboutils groboutils core 5test slf4j public class device...