[PATCH] Qt4: qmake to generate .vcproj files
Thiago A. CorrĂȘa <[email protected]> Sun, 10 Jul 2005 16:41:56 -0300
| Newsgroups | gmane.comp.kde.devel.cygwin |
|---|---|
| Message-ID | <[email protected]> |
Hi, It took me quite a while, but this patch allows qmake to generate .vcproj files. It's still far from perfect, TEMPLATE = subdirs won't work. Not sure what else won't work as well, most likely moc build rules won't either :( But at least it won't crash :) Regards, Thiago A. Correa __________________________________________________________________________ UOL Fone: Fale com o Brasil e o Mundo com até 90% de economia. http://www.uol.com.br/fone _______________________________________________ kde-cygwin mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-cygwin
qmake.patch
(application/octet-stream, 7.4 KB)
? qmake/Makefile
? qmake/Makefile.Debug
? qmake/Makefile.Release
? qmake/debug
? qmake/qmake
? qmake/qmake.ncb
? qmake/qmake.sln
? qmake/qmake.suo
? qmake/release
? qmake/examples/precompile/Makefile
? qmake/examples/precompile/Makefile.Debug
? qmake/examples/precompile/Makefile.Release
? qmake/examples/precompile/debug
? qmake/examples/precompile/release
? qmake/examples/precompile/tmp
Index: qmake/generators/metamakefile.cpp
===================================================================
RCS file: /cvsroot/qtwin/qt-4/qmake/generators/metamakefile.cpp,v
retrieving revision 1.2
diff -u -p -r1.2 metamakefile.cpp
--- qmake/generators/metamakefile.cpp 5 Jul 2005 03:42:45 -0000 1.2
+++ qmake/generators/metamakefile.cpp 6 Jul 2005 02:28:35 -0000
@@ -394,7 +394,7 @@ MetaMakefileGenerator::createMakefileGen
} else if(gen == "MSVC.NET") {
// Visual Studio >= v7.0
if(proj->first("TEMPLATE").indexOf(QRegExp("^vc.*")) != -1)
- mkfile = new VcprojGenerator;
+ mkfile = new VcprojGenerator;
else
mkfile = new NmakeMakefileGenerator;
} else if(gen == "BMAKE") {
Index: qmake/generators/win32/msvc_objectmodel.cpp
===================================================================
RCS file: /cvsroot/qtwin/qt-4/qmake/generators/win32/msvc_objectmodel.cpp,v
retrieving revision 1.1
diff -u -p -r1.1 msvc_objectmodel.cpp
--- qmake/generators/win32/msvc_objectmodel.cpp 5 Jul 2005 03:42:45 -0000 1.1
+++ qmake/generators/win32/msvc_objectmodel.cpp 10 Jul 2005 18:06:02 -0000
@@ -1830,11 +1830,11 @@ VCFilter::VCFilter()
void VCFilter::addMOCstage( QTextStream & /*strm*/, QString filename )
{
- /*QString mocOutput = Project->findMocDestination( filename );
+/* QString mocOutput = Project->var( "MOC_OBJ" );
QString mocApp = Project->var( "QMAKE_MOC" );
if( mocOutput.isEmpty() && filename.endsWith(".moc") ) {
- // In specialcases we DO moc .cpp files
+ // In specialcases we DO moc .cpp files
// when the result is an .moc file
mocOutput = filename;
filename = Project->findMocSource( mocOutput );
@@ -1849,7 +1849,8 @@ void VCFilter::addMOCstage( QTextStream
CustomBuildTool.CommandLine += (mocApp + " "
+ filename + " -o " + mocOutput);
CustomBuildTool.AdditionalDependencies = mocApp;
- CustomBuildTool.Outputs += mocOutput;*/
+ CustomBuildTool.Outputs += mocOutput;
+ */
}
void VCFilter::addUICstage( QTextStream & /*strm*/, QString str )
Index: qmake/generators/win32/msvc_vcproj.cpp
===================================================================
RCS file: /cvsroot/qtwin/qt-4/qmake/generators/win32/msvc_vcproj.cpp,v
retrieving revision 1.1
diff -u -p -r1.1 msvc_vcproj.cpp
--- qmake/generators/win32/msvc_vcproj.cpp 5 Jul 2005 03:42:45 -0000 1.1
+++ qmake/generators/win32/msvc_vcproj.cpp 10 Jul 2005 19:11:07 -0000
@@ -47,8 +47,8 @@
//#define DEBUG_PROJECT_GEN
// Registry keys for .NET version detection -------------------------
-const char* _regNet2002 = "Microsoft\\VisualStudio\\7.0\\Setup\\VC\\ProductDir";
-const char* _regNet2003 = "Microsoft\\VisualStudio\\7.1\\Setup\\VC\\ProductDir";
+const char* _regNet2002 = "Software/Microsoft/VisualStudio/7.0/Setup/VC/ProductDir";
+const char* _regNet2003 = "Software/Microsoft/VisualStudio/7.1/Setup/VC/ProductDir";
bool use_net2003_version()
{
@@ -65,9 +65,9 @@ bool use_net2003_version()
// Get registry entries for both versions
bool ok = FALSE;
- QSettings setting(0);
- QString path2002 = setting.value(_regNet2002).toString();
- QString path2003 = setting.value(_regNet2003).toString();
+ QSettings setting("HKEY_LOCAL_MACHINE", QSettings::NativeFormat);
+ QString path2002 = setting.value(_regNet2002).toString();
+ QString path2003 = setting.value(_regNet2003).toString();
if ( path2002.isNull() || path2003.isNull() ) {
// Only have one MSVC, so use that one
@@ -139,7 +139,7 @@ VcprojGenerator::VcprojGenerator() : Win
*/
bool VcprojGenerator::writeMakefile(QTextStream &t)
{
- // Check if all requirements are fullfilled
+ // Check if all requirements are fullfilled
if(!project->variables()["QMAKE_FAILED_REQUIREMENTS"].isEmpty()) {
fprintf(stderr, "Project file not generated because all requirements not met:\n\t%s\n",
var("QMAKE_FAILED_REQUIREMENTS").toLatin1());
@@ -148,16 +148,16 @@ bool VcprojGenerator::writeMakefile(QTex
// Generate project file
if(project->first("TEMPLATE") == "vcapp" ||
- project->first("TEMPLATE") == "vclib") {
+ project->first("TEMPLATE") == "vclib") {
debug_msg(1, "Generator: MSVC.NET: Writing project file" );
- t << vcProject;
- return TRUE;
+ t << vcProject;
+ return TRUE;
}
// Generate solution file
else if(project->first("TEMPLATE") == "vcsubdirs") {
debug_msg(1, "Generator: MSVC.NET: Writing solution file" );
- writeSubDirs(t);
- return TRUE;
+ writeSubDirs(t);
+ return TRUE;
}
return FALSE;
@@ -568,7 +568,7 @@ void VcprojGenerator::initConfiguration(
DConf.linker.GenerateDebugInformation = _True;
// Modify configurations, based on Qt build
- if ( project->isActiveConfig("debug") ) {
+ if ( project->isActiveConfig("debug") ) {
RConf.IntermediateDirectory =
RConf.compiler.AssemblerListingLocation =
RConf.compiler.ObjectFile = "Release\\";
@@ -834,6 +834,8 @@ inline bool XLessThanY( QString &x, QStr
}
void nonflatDir_BubbleSort( QStringList& list, bool flat_mode )
{
+ if ( list.isEmpty() )
+ return;
QStringList::Iterator b = list.begin();
QStringList::Iterator e = list.end();
QStringList::Iterator last = e;
@@ -1184,8 +1186,8 @@ void VcprojGenerator::initOld()
}
// MOC -----------------------------------------------------------
- /*if ( project->isActiveConfig("moc") )
- setMocAware(TRUE);*/
+ //if ( project->isActiveConfig("moc") )
+ //setMocAware(TRUE);
// /VERSION:x.yz -------------------------------------------------
if ( !project->variables()["VERSION"].isEmpty() ) {
@@ -1199,7 +1201,7 @@ void VcprojGenerator::initOld()
project->variables()["QMAKE_LIBS"] += project->variables()["LIBS"];
// Update -lname to name.lib, and -Ldir to
- QStringList &libList = project->variables()["QMAKE_LIBS"];
+/* QStringList &libList = project->variables()["QMAKE_LIBS"];
for( it = libList.begin(); it != libList.end(); ) {
QString s = *it;
s.replace("&", "&");
@@ -1213,7 +1215,7 @@ void VcprojGenerator::initOld()
it++;
}
}
-
+*/
// Run through all variables containing filepaths, and -----------
// slash-slosh them correctly depending on current OS -----------
project->variables()["QMAKE_FILETAGS"] += QString("HEADERS SOURCES DEF_FILE RC_FILE TARGET QMAKE_LIBS DESTDIR DLLDESTDIR INCLUDEPATH").split(" ");
@@ -1464,10 +1466,10 @@ void VcprojGenerator::processPrlVariable
void VcprojGenerator::outputVariables()
{
-#if 0
+#if 1
qDebug( "Generator: MSVC.NET: List of current variables:" );
for ( QMap<QString, QStringList>::ConstIterator it = project->variables().begin(); it != project->variables().end(); ++it) {
- qDebug( "Generator: MSVC.NET: %s => %s", it.key().toLatin1(), it.data().join(" | ").toLatin1() );
+ qDebug( "Generator: MSVC.NET: %s => %s", it.key().toLatin1().constData(), it.value().join(" | ").toLatin1().constData() );
}
#endif
}
win32-msvc.net.patch
(application/octet-stream, 3 KB)
Index: win32-msvc.net/qmake.conf
===================================================================
RCS file: /cvsroot/qtwin/qt-4/mkspecs/win32-msvc.net/qmake.conf,v
retrieving revision 1.1
diff -u -p -r1.1 qmake.conf
--- win32-msvc.net/qmake.conf 5 Jul 2005 03:40:11 -0000 1.1
+++ win32-msvc.net/qmake.conf 10 Jul 2005 19:25:19 -0000
@@ -1,5 +1,5 @@
#
-# $Id: qmake.conf,v 1.1 2005/07/05 03:40:11 chehrlic Exp $
+# $Id: qt/qmake.conf 3.3.4 edited Dec 8 2003 $
#
# qmake configuration for win32-msvc.net
#
@@ -8,14 +8,11 @@
MAKEFILE_GENERATOR = MSVC.NET
TEMPLATE = app
-CONFIG += qt warn_on release incremental flat link_prl precompile_header debug_and_release debug_and_release_target
+CONFIG += qt warn_on release flat link_prl copy_dir_files precompiled_header
+QT += core gui
DEFINES += UNICODE QT_LARGEFILE_SUPPORT
QT_CONFIG += zlib qt-zlib qt-libpng qt-libjpeg
-QMAKE_COMPILER_DEFINES += WIN32
-
-exists( $(QTDIR)\.qtwinconfig ) {
- include( $(QTDIR)\.qtwinconfig )
-}
+QMAKE_COMPILER_DEFINES += _MSC_VER=1300 WIN32
QMAKE_CC = cl
QMAKE_LEX = flex
@@ -70,7 +67,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CX
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
-QMAKE_LFLAGS_RELEASE = /DELAYLOAD:comdlg32.dll /DELAYLOAD:oleaut32.dll /DELAYLOAD:winmm.dll /DELAYLOAD:wsock32.dll /DELAYLOAD:winspool.dll delayimp.lib
+QMAKE_LFLAGS_RELEASE = /DELAYLOAD:comdlg32.dll /DELAYLOAD:oleaut32.dll /DELAYLOAD:winmm.dll /DELAYLOAD:wsock32.dll /DELAYLOAD:winspool.dll
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
@@ -78,17 +75,14 @@ QMAKE_LFLAGS_CONSOLE_DLL= /SUBSYSTEM:CON
QMAKE_LFLAGS_WINDOWS_DLL= /SUBSYSTEM:WINDOWS /DLL
QMAKE_LFLAGS_QT_DLL = /BASE:0x39D00000
-QMAKE_LIBS =
-QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
-QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib uuid.lib user32.lib
-QMAKE_LIBS_NETWORK = ws2_32.lib
-QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib
-QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
-QMAKE_LIBS_QT = qt.lib
-QMAKE_LIBS_QT_THREAD = qt-mt.lib
+QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib delayimp.lib
+QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib uuid.lib user32.lib delayimp.lib
+QMAKE_LIBS_NETWORK = ws2_32.lib delayimp.lib
+QMAKE_LIBS_OPENGL = opengl32.lib glu32.lib gdi32.lib user32.lib delayimp.lib
+QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib delayimp.lib
QMAKE_LIBS_QT_ENTRY = qtmain.lib
-QMAKE_LFLAGS_OPENGL = /DELAYLOAD:opengl32.dll delayimp.lib
+QMAKE_LFLAGS_OPENGL = /DELAYLOAD:opengl32.dll
QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe