2016-06-12 3 views
0

私はqtcreatorに2つのプロジェクトがあります:BiosPatcher - コード& BiosPatcherTest - BiosPatcherコードのgoogletestユニットテスト。ここからのアドバイス:プロジェクトヘッダーファイルを別のプロジェクトからインポートしてqtcreatorプロジェクトのライブラリとして使用する方法

multiple main declaration in qtcreator project which uses googletest

方法別に一つのプロジェクトからソースをインポートして、別のqtcreatorプロジェクトにqtcreatorにライブラリとして建てプロジェクトを接続するには?

BiosPatcherプロジェクトがあります。

BiosPatcher\src\bios\Bios.{cpp, hpp} class 

とBiosPatcherTestに、私はテストがあります。

#include "src/bios/Bios.hpp" //not works 
... 
TEST(BiosTest, testReadMethodReadsFromBiosIO) { 
MockBiosIO mockBiosIO; 
EXPECT_CALL(mockBiosIO, readAsBytes()) 
    .Times(AtLeast(1)); 

MockReentrantLock mockReentrantLock; 
MockBiosVector mockBiosVector; 
MockPatch mockPatch; 
MockLog mockLog; 

Bios bios; 
bios.setBiosIO(&mockBiosIO); 
bios.setLock(&mockReentrantLock); 
bios.setBiosBytesVector(&mockBiosVector); 
bios.setLog(&mockLog); 
bios.setPatch(&mockPatch); 

bios.read(); 

}

答えて

0

まず、あなたはBiosPatcher C++共有ライブラリプロジェクトを作成する必要があります。 後、あなただけのクラス宣言にBIOSPATCHER_LIBRARYを追加する必要が

この

class BiosPatcher 
{ 

必要がこの

class BIOSPATCHERSHARED_EXPORT BiosPatcher 
{ 

に置き換え、それはちょうどあなたのライブラリーをコンパイルした後、2番目の同じヘッダをインクルードしますプロジェクトに追加し、リンクに追加して.libファイルを生成しました。私は名前BiosPatcherと私のQt Creatorでライブラリプロジェクトを作成し

DEPENDPATH''= . ../BiosPatcher 
INCLUDEPATH ''= ../BiosPatcher 
LIBS''= -L../BiosPatcher/debug -lBiosPatcher 

は、IDEが自動に、そのcontaints BIOSPATCHERSHARED_EXPORT definationをbiospatcher_global.hファイルを作成しました。そのファイルはすべてのライブラリヘッダーに含める必要があります。 BIOSPATCHER_LIBRARYと定義された場合、BIOSPATCHERSHARED_EXPORTQ_DECL_EXPORTと、それ以外の場合はQ_DECL_IMPORTと定義されます。 BIOSPATCHER_LIBRARYはライブラリ.proファイルに定義されています。つまり、別のプロジェクトのヘッダーを含めると、クラスはコンパイルされたライブラリからインポートされます。

#ifndef BIOSPATCHER_GLOBAL_H 
#define BIOSPATCHER_GLOBAL_H 

#include <QtCore/qglobal.h> 

#if defined(BIOSPATCHER_LIBRARY) 
# define BIOSPATCHERSHARED_EXPORT Q_DECL_EXPORT 
#else 
# define BIOSPATCHERSHARED_EXPORT Q_DECL_IMPORT 
#endif 

#endif // BIOSPATCHER_GLOBAL_H 

もこれを読んで:https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application

関連する問題