UnitTest ++和g ++ - 库的相对路径

时间:2013-02-12 15:10:54

标签: g++ unittest++

我正在尝试让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

1 个答案:

答案 0 :(得分:3)

在编译时,必须在其依赖性之前给出要编译的文件(在此上下文中为test.cpp)。这很有效:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test