我已经在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