Qt nmake使用DEFINES变量构建

时间:2012-08-03 08:27:43

标签: windows qt visual-c++ nmake

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

要求是,
我有多个预编译的静态库,我想在我的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 libs访问apis。编译并且工作得很好。
但在我的情况下,有多个项目,我不想每次都这样做。

我不认为在我的项目中逐个包含头文件;代替, 有一个全局头文件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命令中的任何信息?如何编译这个项目?
对不起,如果我没有写好。如果您需要更多详细信息,请与我们联系 在此先感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

回答错误。发生这种情况是因为

#include GLOBAL_HEAD

转换为

#include C:\Proj\GlobalHeader.h

何时应将其括在“或尖括号

我尝试添加.pro文件

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

但它没有帮助。

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