1. 程式人生 > >Windows 和 linux 下CUnit編譯安裝教程

Windows 和 linux 下CUnit編譯安裝教程

本文大部分均參看以下連結,安裝當中有些地方不詳細,我添加了

首先要安裝mingw和msys,下載地址:點選開啟連結

1. 安裝 

1)準備環境:Win7安裝MinGW

1.1)Win7已就緒

1.2)下載 MinGW:www.mingw.org => Downloads => mingw-get-setup.exe

1.3)安裝MinGW:

    預設安裝目錄:C:/MinGW

    Basic setup:    mingw-get install mingw32-base msys-base  gcc   g++, 

    All packages:msys base和mingw developer toolkit.  //這裡是安裝automake autocofing工具等。

1.4)啟動MSYS:C:\MinGW\msys\1.0\msys.bat

    MSYS命令列中的/目錄,即是Win7中的C:\MinGW\msys\1.0目錄。

2)下載編譯安裝

2.1)下載CUnit: sourceforge.net/projects/cunit/  =>  Download  => CUnit-2.1-3.tar.bz2

2.2)複製 CUnit-2.1-3.tar.bz2 到 MSYS的/home/cunit

2.3)解壓 CUnit-2.1-3.tar.bz2 到當前目錄

2.4)MSYS命令列進入到目錄/home/cunit/CUnit-2.1-3

2.4.1)執行./bootstrap

/opt/cunit 是我要安裝到的目錄

bootstrap完成了所有aclocal, autoconf, automake等等操作,直到configure完成。

2.4.2)執行make

2.4.3)執行make install 

2.5)已經安裝到/opt/cunit,/opt/cunit/doc/CUnit/index.html就是CUnit的介紹

3)測試使用

3.0)在目錄/home/cunit/maxi中

3.1)新增被測檔案:maxi.c, maxi.h

maxi.h

extern int maxi(int i1, int i2); maxi.c

int maxi(int i1, int i2) {     return i1>i2? i1: i2; } 3.2)新增測試檔案:test_main.c

#include <CUnit/Basic.h> #include <CUnit/Console.h> #include <CUnit/CUnit.h> #include <CUnit/TestDB.h>   #include <stdlib.h>  #include "maxi.h"   /* test cases */   void test_maxi_1(void) {     CU_ASSERT(maxi(0,2)==2);  //  this case will pass }   void test_maxi_2(void) {     CU_ASSERT(maxi(0,-2)==1);    // this case will fail }   void test_maxi_3(void) {     CU_ASSERT(maxi(2,2)==2);    // this case will pass }   CU_TestInfo tests[] = {     {"test 1", test_maxi_1 },     {"test 2", test_maxi_2 },     {"test 3", test_maxi_3 },     CU_TEST_INFO_NULL };   /* suite init */ int suite_init(void) {     return 0; }   int suite_clean(void) {     return 0; }   void suite_setup(void) { }   void suite_teardown(void) { }   CU_SuiteInfo suites[] = {     {"suite 1", suite_init, suite_clean, suite_setup, suite_teardown, tests},     CU_SUITE_INFO_NULL };   /* registry */   int main(int argc, char* argv[]) {     CU_ErrorCode err;       /* init */     printf("init\n");     err = CU_initialize_registry();     if( err ){         printf("CU_initialize_registry: %d\n", err);         return err;     }       /* add suites and tests */     printf("add suites and tests\n");     err = CU_register_suites(suites);     if( err )     {         printf("CU_register_suites: %d\n", err);     }     CU_pTestRegistry reg = CU_get_registry();     printf("CU_get_registry: %d/%d/%u\n", reg->uiNumberOfSuites, reg->uiNumberOfTests, (long)reg->pSuite);       /* run auto */     printf("run auto\n");     /**** Automated Mode *****************/     CU_set_output_filename("TestMax");     CU_list_tests_to_file();     CU_automated_run_tests();     //************************************/       printf("run basic\n");     /***** Basice Mode *******************/     CU_basic_set_mode(CU_BRM_VERBOSE);     CU_basic_run_tests();     //************************************/       /*****Console Mode ********************     CU_console_run_tests();     //************************************/                  /* end */     printf("end\n");     CU_cleanup_registry();     err = CU_get_error();     if( err )     {         printf("error: %d", err);     }     return err;   }   3.3)新增編譯指令碼:build.sh

gcc maxi.c test_main.c -o test -I/opt/cunit/include -L/opt/cunit/lib -lcunit -static 3.4)執行編譯指令碼:build.sh

有警告,沒關係。

3.5)執行測試:test.exe