Commit a52c672a authored by Klas Lindfors's avatar Klas Lindfors

Imported Upstream version 3.0.3

parents
Copyright (C) 2011-2012 Yubico AB
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Qt based Cross-Platform YubiKey Personalization Tool
====================================================
See the file COPYING for copyright and license statement.
==================================
Introduction
==================================
The YubiKey Personalization Tool is a Qt based Cross-Platform utility
designed to facilitate re-configuration of YubiKeys on Windows, Linux
and MAC platforms. The tool provides a same simple step-by-step
approach to make configuration of YubiKeys easy to follow and
understand, while still being powerful enough to exploit all
functionality both of the YubiKey 1 and YubiKey 2 generation of
keys. The tool provides the same functionality and user interface on
Windows, Linux and MAC platforms.
The Cross-Platform YubiKey Personalization Tool provides the following
main functions:
* Programming the YubiKey in "Yubico OTP" mode
* Programming the YubiKey in "OATH-HOTP" mode
* Programming the YubiKey in "Static Password" mode
* Programming the YubiKey in "Challenge-Response" mode
* Checking type and firmware version of the YubiKey
==================================
Building from Git
==================================
You may check out the sources using Git with the following command:
-----------
$ git clone git://github.com/Yubico/yubikey-personalization-gui.git
-----------
This will create a directory 'yubikey-personalization-gui'. Enter the
directory:
-----------
$ cd yubikey-personalization-gui
-----------
There are three files "YKPersonalization.pro.user.win",
"YKPersonalization.pro.user.lin" and "YKPersonalization.pro.user.mac",
one for each of Windows, Linux and MAC platforms that are supported by
the tool. Depending upon your platform, rename the corresponding file
to "YKPersonalization.pro.user". (The instructions in this paragraph
appears to not be needed for command-line builds.)
============
Dependencies
============
You will need QT Creator and libusb-1.0 development files.
sudo apt-get install libusb-1.0-0-dev qtcreator
==================
Command-line build
==================
Run these commands:
qmake
make
==================================
Opening the project in Qt designer
==================================
Locate the qtcreator executable file and click on it to open the Qt
Designer.
To open the project in Qt Designer, select "File" > "Open File or
Project" from the tool bar, navigate to the project folder, select
YKPersonalisation.pro file and click on the "Open" button.
To set the path of the "Build" diractory select "Projects" > "Build
Settings" Browse project folder path.
==================================
Building
==================================
To generate the build system, select "Build" > "Clean Project
YKPersonalization" option from the tool bar. Then select "Build" >
"Run qmake" option from the tool bar.
To build the project, select "Build" > "Build Project
YKPersonalization" option from the tool bar.
Based on your platform, the successful build will create a "YubiKey
Personalization Tool" executable file into the respective build
folder. The build creates a "YKPersonalization.exe" file on Windows,
"YubiKey Personalization Tool.sh" file on Linux and "YubiKey
Personalization Tool.app" file on MAC.
Example on Linux:
To run the YubiKey Personalization Tool, open the command shell and
execute the following command:
# sudo sh "Yubico/YubiKey\ Personalization\ Tool.sh"
==================================
Questions?
==================================
Talk to <yubico-devel@googlegroups.com>.
#
# global definitions
#
VERSION = "3.0.3"
APP_NAME = $$quote(YubiKey Personalization Tool)
#
# common configuration
#
QT += core gui
TEMPLATE = app
TARGET = YKPersonalization
DEFINES += VERSION=\\\"$${VERSION}\\\"
CONFIG(debug, debug|release) {
TARGET_DIR = build/debug
CONFIG += console no_lflags_merge
} else {
TARGET_DIR = build/release
DEFINES += QT_NO_DEBUG_OUTPUT
}
UI_DIR = ./src/ui
RCC_DIR = "$$TARGET_DIR/RCCFiles"
MOC_DIR = "$$TARGET_DIR/MOCFiles"
OBJECTS_DIR = "$$TARGET_DIR/ObjFiles"
DESTDIR = "$$TARGET_DIR"
DEPENDPATH += . src src/ui
INCLUDEPATH += . src src/ui
FORMS += \
src/ui/toolpage.ui \
src/ui/staticpage.ui \
src/ui/settingpage.ui \
src/ui/otppage.ui \
src/ui/oathpage.ui \
src/ui/mainwindow.ui \
src/ui/helpbox.ui \
src/ui/confirmbox.ui \
src/ui/chalresppage.ui \
src/ui/aboutpage.ui
HEADERS += \
src/ui/toolpage.h \
src/ui/staticpage.h \
src/ui/settingpage.h \
src/ui/scanedit.h \
src/ui/otppage.h \
src/ui/oathpage.h \
src/ui/mainwindow.h \
src/ui/helpbox.h \
src/ui/confirmbox.h \
src/ui/chalresppage.h \
src/ui/aboutpage.h \
src/yubikeywriter.h \
src/yubikeyutil.h \
src/yubikeylogger.h \
src/yubikeyfinder.h \
src/yubikeyconfig.h \
src/version.h \
src/otpdef.h \
src/common.h
SOURCES += \
src/main.cpp \
src/ui/toolpage.cpp \
src/ui/staticpage.cpp \
src/ui/settingpage.cpp \
src/ui/scanedit.cpp \
src/ui/otppage.cpp \
src/ui/oathpage.cpp \
src/ui/mainwindow.cpp \
src/ui/helpbox.cpp \
src/ui/confirmbox.cpp \
src/ui/chalresppage.cpp \
src/ui/aboutpage.cpp \
src/yubikeywriter.cpp \
src/yubikeyutil.cpp \
src/yubikeylogger.cpp \
src/yubikeyfinder.cpp \
src/yubikeyconfig.cpp
RESOURCES += \
resources/resources.qrc
OTHER_FILES += \
resources/win/resources.rc \
resources/mac/Yubico.icns \
resources/mac/Info.plist.in
!debian {
HEADERS += \
deps/libusb-1.0/libusb.h \
deps/libykpers/ykpers.h \
deps/libykpers/ykpbkdf2.h \
deps/libykpers/ykcore/yktsd.h \
deps/libykpers/ykcore/ykstatus.h \
deps/libykpers/ykcore/ykdef.h \
deps/libykpers/ykcore/ykcore_lcl.h \
deps/libykpers/ykcore/ykcore_backend.h \
deps/libykpers/ykcore/ykcore.h \
deps/libykpers/rfc4634/sha.h \
deps/libykpers/rfc4634/sha-private.h \
deps/libyubikey/yubikey.h
INCLUDEPATH += . src src/ui deps/libusb-1.0 deps/libykpers deps/libykpers/ykcore deps/libyubikey
}
#
# Windows specific configuration
#
win32 {
HEADERS += src/crandom.h
SOURCES += src/crandom.cpp
# The application icon
RC_FILE = resources/win/resources.rc
# The application dependencies
!contains(QMAKE_HOST.arch, x86_64) {
message("Windows x86 build")
LIBS += $$quote(-L./libs/win32) -llibyubikey-0 -llibykpers-1-1
} else {
message("Windows x86_64 build")
LIBS += $$quote(-L./libs/win64) -llibyubikey-0 -llibykpers-1-1
}
# Copy dependencies
!contains(QMAKE_HOST.arch, x86_64) {
CONFIG(debug, debug|release) {
LIB_FILES += \
$(QTDIR)/bin/QtCored4.dll \
$(QTDIR)/bin/QtGuid4.dll
} else {
LIB_FILES += \
$(QTDIR)/bin/QtCore4.dll \
$(QTDIR)/bin/QtGui4.dll
}
LIB_FILES += \
$(QTDIR)/bin/libgcc_s_dw2-1.dll \
$(QTDIR)/../mingw/bin/mingwm10.dll \
libs/win32/libyubikey-0.dll \
libs/win32/libykpers-1-1.dll
} else {
LIB_FILES += \
libs/win64/libyubikey-0.dll \
libs/win64/libykpers-1-1.dll
}
LIB_FILES_WIN = $${LIB_FILES}
LIB_FILES_WIN ~= s,/,\\,g
TARGET_DIR_WIN = $${DESTDIR}
TARGET_DIR_WIN ~= s,/,\\,g
for(FILE, LIB_FILES_WIN) {
QMAKE_POST_LINK +=$$quote(cmd /c copy /y $${FILE} $${TARGET_DIR_WIN}$$escape_expand(\\n\\t))
}
}
#
# Non-windows specific configuration
#
!win32:!debian {
SOURCES += \
deps/libykpers/ykpers.c \
deps/libykpers/ykpbkdf2.c \
deps/libykpers/ykcore/ykstatus.c \
deps/libykpers/ykcore/ykcore.c \
deps/libykpers/rfc4634/usha.c \
deps/libykpers/rfc4634/sha384-512.c \
deps/libykpers/rfc4634/sha224-256.c \
deps/libykpers/rfc4634/sha1.c \
deps/libykpers/rfc4634/hmac.c \
deps/libyubikey/yktoken.c \
deps/libyubikey/ykmodhex.c \
deps/libyubikey/ykhex.c \
deps/libyubikey/ykcrc.c \
deps/libyubikey/ykaes.c
}
#
# *nix specific configuration
#
unix:!macx {
debian {
message("Debian build")
TARGET = yubikey-personalization-gui
LIBS += -lyubikey
CONFIG += link_pkgconfig
PKGCONFIG += ykpers-1 libusb
QMAKE_CXXFLAGS += $$(CXXFLAGS)
QMAKE_LFLAGS += $$(LDFLAGS)
} else {
message("Linux build")
SOURCES += deps/libykpers/ykcore/ykcore_libusb-1.0.c
# The application dependencies
LIBS += $$quote(-L./libs/lin) -lusb-1.0
TARGET_LIN = $${APP_NAME}
TARGET_LIN ~= s, ,\\ ,g
# Copy dependencies and other resources
LIB_FILES += \
$(QTDIR)/lib/libQtGui.so.4 \
$(QTDIR)/lib/libQtCore.so.4 \
libs/lin/libusb-1.0.so.0 \
resources/lin/$${TARGET_LIN}.sh
for(FILE, LIB_FILES){
QMAKE_POST_LINK += $$quote(cp $${FILE} $${DESTDIR}$$escape_expand(\\n\\t))
}
# Create application tarball
TARROOT = Yubico
TARFILE = "$${TARGET_LIN}\\ Installer-lin.tgz"
tarball.target = tarball
tarball.commands = \
rm -rf "$${DESTDIR}/$${TARROOT}"; \
mkdir "$${DESTDIR}/$${TARROOT}"; \
(cd $${DESTDIR} && cp -R $${TARGET} *.sh *.so* "$${TARROOT}"); \
rm -f "$${DESTDIR}/$${TARFILE}"; \
(cd $${DESTDIR} && tar -czf "$${TARFILE}" $${TARROOT}); \
rm -rf "$${DESTDIR}/$${TARROOT}";
QMAKE_EXTRA_TARGETS += tarball
}
}
#
# MacOS X specific configuration
#
macx {
message("Mac build")
CONFIG += x86
SOURCES += deps/libykpers/ykcore/ykcore_osx.c
# The application dependencies
LIBS += /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
LIBS += /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
# The application executable name
TARGET = $$APP_NAME
TARGET_MAC = $${TARGET}
TARGET_MAC ~= s, ,\\ ,g
# The application icon
ICON = resources/mac/Yubico.icns
# Copy required resources into the final app bundle and
# put the current version number into Info.plist
QMAKE_POST_LINK = $$quote(mkdir -p $${DESTDIR}/$${TARGET_MAC}.app/Contents/Resources && \
cp -R resources/mac/Yubico.icns $${DESTDIR}/$${TARGET_MAC}.app/Contents/Resources/. && \
sed -e \'s|@@version@@|$$VERSION|g\' \
< resources/mac/Info.plist.in > $${DESTDIR}/$${TARGET_MAC}.app/Contents/Info.plist)
# Create application dmg
shutup = ">/dev/null 2>&1"
isEmpty(MACDEPLOYQT):MACDEPLOYQT = macdeployqt"
!system($$MACDEPLOYQT $$shutup) {
warning("macdeployqt utility '$$MACDEPLOYQT' not found \
will not create target for application bundling")
} else {
macdeploy.depends = $${DESTDIR}/$${TARGET_MAC}.app/Contents/MacOS/$${TARGET_MAC}
macdeploy.target = macdeploy
macdeploy.commands = \
[ -f $${DESTDIR}/$${TARGET_MAC}.app/Contents/Resources/qt.conf ] || \
$$MACDEPLOYQT $${DESTDIR}/$${TARGET_MAC}.app -no-strip;
QMAKE_EXTRA_TARGETS += macdeploy
}
isEmpty(HDIUTIL):HDIUTIL = "hdiutil"
!system($$HDIUTIL help $$shutup) {
warning("hdiutil utility '$$HDIUTIL' not found \
will not create target for disk image creation")
} else {
contains(QMAKE_EXTRA_TARGETS, macdeploy) {
IMAGEROOT = $${DESTDIR}/disk-image-root
IMAGEFILE = $${DESTDIR}/$${TARGET_MAC}\\ Installer-mac.dmg
#Note: Volume name for disk image should be passed without escaping quotes
macdisk.depends = macdeploy
macdisk.target = macdisk
macdisk.commands = \
rm -rf $${IMAGEROOT}; \
mkdir $${IMAGEROOT}; \
cp -R $${DESTDIR}/$${TARGET_MAC}.app $${IMAGEROOT}; \
rm -f $${IMAGEFILE}; \
$${HDIUTIL} create -srcfolder $${IMAGEROOT} -format UDBZ \
-volname \'$${TARGET} $${VERSION}\' $${IMAGEFILE}; \
rm -rf $${IMAGEROOT}
QMAKE_EXTRA_TARGETS += macdisk
}
}
}
#
# Additional cleanup to be performed
#
win32 {
TARGET_DIR_WIN = $${DESTDIR}
TARGET_DIR_WIN ~= s,/,\\,g
QMAKE_CLEAN += $${TARGET_DIR_WIN}\\*.exe \
$${TARGET_DIR_WIN}\\*.dll
} else:macx {
QMAKE_CLEAN += -r $${DESTDIR}/*.app
} else {
QMAKE_CLEAN += -r $${DESTDIR}/*
}
<!DOCTYPE QtCreatorProject>
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="EditorConfiguration.Codec" type="QByteArray">System</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Desktop</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
<value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">1</value>
<value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/data/qtsdk-2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
</valuemap>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">tarball</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Release</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/data/qtsdk-2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
</valuemap>
<value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
<valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">YKPersonalization</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">YKPersonalization.pro</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
<valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetName" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetWorkingDirectory" type="bool">false</value>
<value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">4</value>
</data>
</qtcreator>
This diff is collapsed.
<!DOCTYPE QtCreatorProject>
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value key="EditorConfiguration.Codec" type="QByteArray">UTF-8</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Desktop</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
<value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">1</value>
<value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList">
<value type="QString">-spec</value>
<value type="QString">D:/Qt/2010.05/qt/mkspecs/win32-g++</value>
</valuelist>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
<valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
<value type="QString">clean</value>
</valuelist>
<value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
</valuemap>
<value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
<value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
<valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.7.0 Debug</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">10</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">D:/Qt/2010.05/projects/YKPersonalization/trunk</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">2</value>
<value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
</valuemap>
<valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
<valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList">
<value type="QString">-spec</value>
<value type="QString">D:/qt/2010.05/qt/mkspecs/win32-g++</value>
</valuelist>
</valuemap>
<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
<value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
<value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
<value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
<valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>