我已經在exerciseism.io註冊了一個帳戶,並且正在開發C++測試用例。試圖環繞升壓試驗我的頭,我創建了這個簡單的bob.cpp程序:在命令行上編譯C++ boost測試程序
#include "bob.h"
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[]) {
string s = bob::hey("Claus");
cout << s << endl;
return 0;
}
bob.h:
#include <string>
namespace bob {
std::string hey(std::string s) {
return "Hello " + s;
}
}
與「鐺++ bob.cpp」和與運行終端編譯./ a.out工作。通過此鏈接寫了一個升壓試驗:c++ Using boost test
bob_test.cpp:
#include "bob.h"
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(greeting) {
BOOST_CHECK_EQUAL("Hello Claus", bob::hey("Claus"));
}
但是當我嘗試使用
~/devel/cpp/boost%>clang++ -I /opt/local/include -l boost_unit_test_framework bob_test.cpp
ld: library not found for -lboost_unit_test_framework
clang: error: linker command failed with exit code 1 (use -v to see invocation)
問候 編譯它克勞斯
這是約塞米蒂與Xcode 6.0.1,通過macports安裝boost 1.56。嘗試使用相同的Xcode小牛隊和提升1.55,但結果相同。
我得到它通過改變傳遞給鏈接器的參數工作:
clang++ -I /opt/local/include -Wl,/opt/local/lib/libboost_unit_test_framework.a bob_test.cpp
^^^^
,並提供到庫的完整路徑。
並讓C++ 11級的功能補充一點:
-std=c++11
我試過,很好,但後來我得到「的架構x86_64的未定義符號: ‘_main’,從引用: 隱含進入/啓動主可執行 LD:符號(s)not found for architecture x86_64' – kometen 2014-10-01 15:05:10
好的 - 這是一個不同的問題 - 我會盡快更新我的答案。 – 2014-10-01 15:14:18