我需要帮助用“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命令中的任何信息?如何编译这个项目?
对不起,如果我没有写好。如果您需要更多详细信息,请与我们联系
在此先感谢您的帮助...
答案 0 :(得分:0)
回答错误。发生这种情况是因为
#include GLOBAL_HEAD
转换为
#include C:\Proj\GlobalHeader.h
何时应将其括在“或尖括号
中我尝试添加.pro文件
DEFINES += GLOBAL_HEAD=<C:\\Proj\\GlobalHeader.h>
但它没有帮助。
我不知道如何正确编译,所以这只是答案的一半