我正在尝试让UnitTest ++在这个目录树之后的项目中工作:
Project/
|-- src/
|-- test/
| |-- test.cpp
|-- unittest-cpp/
| |-- UnitTest++/
| |-- libUnitTest++.a
| |-- src/
| |-- UnitTest++.h
|-- Makefile
我正在尝试使用g ++在Project目录中进行编译。我的test.cpp文件包含UnitTest ++入门代码。
我尝试了以下内容:
g++ -Lunittest-cpp/UnitTest++/ -lUnitTest++ -Iunittest-cpp/UnitTest++/src/ \
test/test.cpp -o Test
如果我理解的话,-L就是给出静态库的路径。 -l(小L)用于库名称,-I(Capital i)用于包含路径。
我得到两个不同的结果。它要么告诉我它在/ usr / bin / ???中找不到lib。或者它告诉我对unittest :: *。
有未定义的引用是不是因为我给了一个无法编译的库的相对路径?我是新手,通过多个目录使用g ++,我试图了解它是如何工作的,然后让它在我的Makefile中工作。
[编辑]:必须在链接库和标题之前给出test / test.cpp参数。所以,这很有效:
g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test
答案 0 :(得分:3)
在编译时,必须在其依赖性之前给出要编译的文件(在此上下文中为test.cpp)。这很有效:
g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test