0

我需要帮助来使用“nmake”构建我的 Qt 项目。
我正在使用带有“nmake”的 Qt4.8、Windows 7 64Bit、VS2008 命令提示符编译器。

要求是,
我有多个预编译的静态库,我想在我的 Qt 项目中使用它们。

所有静态库,命名为Type1、Type2、Type3和Type4,都经过预编译,生成对应的Type1.lib、Type2.lib、Type3.lib和Type4.lib库文件。

我必须在我的项目中使用 Type1.lib 和 Type3.lib,
我知道常规方法,在我的 Qt 生成的 .PRO 文件中我可以放在哪里

LIBS+=C:\Proj\PRO1\Type1.lib \ 
      C:\Proj\PRO1\Type3.lib

HEADERS += C:\Proj\PRO1\Type1.h \
           C:\Proj\PRO1\Type3.h

我在 main.cpp 中添加了相应的 .h 文件,以从 Type1 和 Type3 库访问 api。编译并且工作得很好。
但就我而言,有多个项目我不应该每次都这样做。

我不打算在我的项目中一一包含头文件;相反,有一个全局头文件 GlobalHeader.h,其中定义了所有其他 lib 头文件路径信息,看起来像这样,

#ifndef GLOBALHEADER_H  
#define GLOBALHEADER_H 

#define TYPE1        "C:\Proj\PRO1\Type1.h" 
#define TYPE2        "C:\Proj\PRO2\Type2.h"  
#define TYPE3        "C:\Proj\PRO3\Type3.h"  
#define TYPE4        "C:\Proj\PRO4\Type4.h" 

#endif  

我的 main.cpp 文件看起来像这样,

#include GLOBAL_HEAD    //this is my requirement
#include TYPE1          //I should be able to use like this
#include TYPE3          //... " ...
#include <QtCore>
#include <QtGui>
#include <QApplication>
#include <QTextEdit>
int main(int argv, char **args)
{
    QApplication app(argv, args);
    QTextEdit textEdit;
    textEdit.show();
    //Lib functions called from TYPE1
    //... some operations ...
    //... some more operations ...
    //Lib functions called from TYPE3
    //... some operation ...
    //... some more operations ...
    return app.exec();
}  

我给了 qmake 命令来编译 main.cpp,

qmake -project DEFINES+=GLOBAL_HEAD=C:\Proj\GlobalHeader.h LIBS+=C:\Proj\PRO1\Type1.lib LIBS+=C:\Proj\PRO1\Type3.lib  

它在下面生成了 .PRO 文件,

DEFINES += GLOBAL_HEAD=C:\Proj\GlobalHeader.h
LIBS += C:\Proj\PRO1\Type1.lib 
LIBS += C:\Proj\PRO1\Type3.lib
TEMPLATE = app
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += .
HEADERS +=
SOURCES += main.cpp 

现在,我的步骤是使用相应的 test.pro 文件生成 Makefile,
所以我给了,

qmake test.pro

Makefile、Makefile.Debug 和 Makefile.Release 生成成功。

现在,我打开了 Visual Studio 2008 命令提示符并导航到我的项目所在的目录,并给出了编译命令,

nmake all  

它产生了错误...

.
.
main.cpp
C:\Proj\test\main.cpp(1) : error C2006: '#include' : expected a filename, found 'identifier'
C:\Proj\test\main.cpp(1) : fatal error C1083: Cannot open include file: '': No such file or directory
.
.

有人可以告诉我代码有什么问题吗?还是我错过了 qmake 命令中的任何信息?我如何使这个项目编译?
对不起,如果我没有写好。如果您需要更多详细信息,请告诉我。
在此先感谢您的帮助...

4

1 回答 1

0

回答有什么问题。发生这种情况是因为

#include GLOBAL_HEAD

转换为

#include C:\Proj\GlobalHeader.h

何时应将其括在 " 或尖括号中

我尝试添加到 .pro 文件

DEFINES += GLOBAL_HEAD=<C:\\Proj\\GlobalHeader.h>

但它没有帮助。

我不知道如何使它正确编译,所以这只是答案的一半

于 2012-08-03T09:05:46.340 回答