我需要帮助来使用“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 命令中的任何信息?我如何使这个项目编译?
对不起,如果我没有写好。如果您需要更多详细信息,请告诉我。
在此先感谢您的帮助...