操作系統(tǒng)系統(tǒng):Ubuntu6,g++
軟件版本:cppunit-1.10.2.tar.gz
(1)獲得源碼:
到cppunit.sourceforge.net上下載源代碼。將其復(fù)制到到linux下或者是直接使用wget下載到linux下。
(2)解壓縮:
使用以下命令即可解壓縮
tar -zxvf cppunit-1.10.2.tar.gz
(3)編譯安裝
cd進(jìn)cppunit-1.10.2目錄下。
./configure
make
make install
make的編譯的文件都在src/cppunit/.libs。
make install只是把鏈接庫(kù)文件復(fù)制到/usr/local/lib,其他的似乎什么都沒(méi)有做。
(4)復(fù)制頭文件
make install沒(méi)有把頭文件安裝到/usr/include中去,此時(shí)還需要手工去復(fù)制,只要把include下面的cppunit目錄復(fù)制到/usr/include下面可以了,命令很簡(jiǎn)單,不寫了。
(5)配置鏈接庫(kù)路徑
這個(gè)時(shí)候,看起來(lái)似乎已經(jīng)安裝配置成功了,其實(shí)不然,在Ubutu、FC(已知的)動(dòng)態(tài)鏈接庫(kù)的配置文件里面并沒(méi)有寫入/usr/local/lib的路徑,雖然可以編譯過(guò),但是你卻發(fā)現(xiàn)會(huì)運(yùn)行不了,會(huì)出現(xiàn)如是的錯(cuò)誤:
./mytest: error while loading shared libraries: libcppunit-1.10.so.2: cannot open shared object file: No such file or directory
真是糟糕,此時(shí)你還需要配置一下鏈接庫(kù)的路徑,鏈接庫(kù)配置文件為/etc/ld.so.conf,以下為修改辦法:
vi /etc/ld.so.conf
在新起一行里面加入:
/usr/local/lib
然后再用ldconfig命令重新裝載一下配置文件可以了:
ldconfig
OK,此時(shí)你已經(jīng)可以正常的編譯并使用了^__^
(6)編寫第一個(gè)HelloWorld
撰寫mytest.cpp(從cppunit.sourceforge.net上copy下來(lái)的),代碼如下:
#include
#include
#include
#include
#include
#include
#include
class Test : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testHelloWorld);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
};
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
int main( int argc, char **argv )
{
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener( &result );
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener( &progress );
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run( controller );
return result.wasSuccessful() ? 0 : 1;
}
將之保存為mytest.cpp。
(7)編譯我們的HelloWorld
你可以鏈接靜態(tài)庫(kù)也可以鏈接靜態(tài)庫(kù)。
(a) 鏈接靜態(tài)庫(kù)。編譯命令:
g++ -L/usr/local/lib/libcppunit.a mytest.cpp -lcppunit -ldl -o mytest
運(yùn)行:
./mytest
結(jié)果:
Test::testHelloWorldHello, world!
: OK
(b) 鏈接動(dòng)態(tài)庫(kù)。編譯命令:
g++ mytest.cpp -lcppunit -ldl -o mytest
運(yùn)行:
./mytest
結(jié)果:
Test::testHelloWorldHello, world!
: OK
如果你沒(méi)有執(zhí)行步驟(5),那么你也可以在每次運(yùn)行之前設(shè)置下臨時(shí)的環(huán)境變量LD_LIBRARY_PATH命令如下:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
補(bǔ)遺:
非Root用戶是不能夠往/usr/local/lib/和/usr/include里面寫東西的,這個(gè)時(shí)候很煩人了。你只能夠把庫(kù)和頭文件放到home目錄里面。
非Root用戶的安裝需要作如下修改:
步驟三需要修改configure,這里 -prefix=/home/me的意思是把安裝的根目錄設(shè)置為/home/me(我的私人目錄, 我不是管理員所以只好安裝到自己的“家“了),這樣make install的時(shí)候,庫(kù)文件會(huì)復(fù)制到此目錄下的lib目錄里。
./configure -prefix=/home/me
Ok,把頭文件也放置到/home/me里面吧。這樣,情況是:頭文件存儲(chǔ)在/home/me/include,庫(kù)文件存儲(chǔ)在/home/me/lib。
編譯的時(shí)候命令會(huì)像如下所示:
g++ -g -L/home/me/lib -lcppunit -ldl -I/home/me/include Main.C
因?yàn)槭欠莚oot用戶,所以步驟(5)是無(wú)法執(zhí)行的了,想要能夠運(yùn)行測(cè)試程序只能夠執(zhí)行類型類似命令才能夠運(yùn)行了:
export LD_LIBRARY_PATH=/home/me/lib:$LD_LIBRARY_PATH
(注:/home/me里面的me代表的是你的用戶名,在Linux下面,除了root的用戶目錄是在/root下,其他用戶都是在/home下的,目錄名為用戶名。當(dāng)你登錄當(dāng)前用戶之后,在此目錄下。)
單元測(cè)試,終它是要運(yùn)用到工程中去的,如果還那樣用g++命令直接編譯,肯定是行不通的,所以還必須要寫一個(gè)Makefile才可以。