2

このディレクトリツリーに従って、UnitTest++をプロジェクトで動作させようとしています。

Project/
|-- src/
|-- test/
|   |-- test.cpp
|-- unittest-cpp/
|   |-- UnitTest++/
|       |-- libUnitTest++.a
|       |-- src/
|            |-- UnitTest++.h
|-- Makefile

Projectディレクトリにいるときにg++でコンパイルしようとしています。私のtest.cppファイルには、UnitTest++入門コードが含まれています。

私は次のことを試しました:

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

私がよく理解しているなら、-Lは静的ライブラリへのパスを与えることです。-l(小さいL)はライブラリ名を表し、-I(大文字のi)はインクルードパスを表します。

2つの異なる結果が得られます。/ usr / bin/???にlibが見つからないことを通知します。または、unittest::*への未定義の参照があることを教えてくれます。

ライブラリへの相対パスを指定しているため、コンパイルできませんか?複数のディレクトリでg++を使用するのは初めてで、Makefileで機能させる前に、g++がどのように機能するかを理解しようとしています。

[編集]:ライブラリとヘッダーをリンクする前に、test/test.cppパラメーターを指定する必要がありました。だから、これはうまくいきました:

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

1 に答える 1

3

コンパイルするファイル(このコンテキストではtest.cpp)は、コンパイル時に依存関係の前に指定する必要があります。これはうまくいきました:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test
于 2013-07-01T19:43:54.890 に答える