2016-12-31 123 views
2

我安裝在我的Mac升壓像這樣brew install boost,然後創建了一個名爲BoostTest.cpp包含以下幾個最基本的示例文件:問題安裝和使用Boost單元測試框架

#define BOOST_TEST_DYN_LINK 
#define BOOST_TEST_MODULE BoostTest 
#include <boost/test/unit_test.hpp> 

int add(int i, int j) 
{ 
    return i + j; 
} 

BOOST_AUTO_TEST_CASE(universeInOrder) 
{ 
    BOOST_CHECK(add(2, 2) == 4); 
} 

然後我試圖編譯它,像這樣:

g++ -lboost_unit_test_framework BoostTest.cpp -o BoostTest

,並得到了輸出結果:

Undefined symbols for architecture x86_64: 
    "boost::unit_test::ut_detail::normalize_test_case_name[abi:cxx11](boost::unit_test::basic_cstring<char const>)", referenced from: 
    boost::unit_test::make_test_case(boost::function<void()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in cc2uldAx.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

我做錯了什麼,我該怎麼做這個工作?

回答

1

看起來你需要將它設置爲C++ 11。

試試這個:

clang++ -std=c++11 -lboost_unit_test_framework -L/usr/local/lib -I/usr/local/include BoostTest.cpp -o BoostTest