解决msvc静态编译qt后无法更改
安装目录的
问题主要是修改了*.prl中的lib路径,应用了目录遍历和正则表达式
源码以及成品(msvc2012静态
编译,兼容XP)
更改安装目录后将本工具放到安装目录根目录下运行即可
- #include <QCoreApplication>
- #include <QDebug>
- #include <QDir>
- #include <QFile>
- #include <QRegExp>
- #include <iostream>
- #include <qt_windows.h>
- #include <QDirIterator>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QString appPath = QCoreApplication::applicationDirPath();
- qDebug()<<QStringLiteral("当前路径:")+appPath;
- QFile check;
- check.setFileName(appPath+"/bin/qmake.exe");
- if(!check.open(QIODevice::ReadOnly)){
- std::cout<<"\n\n<<<<<<<<请将本程序放入Qt安装目录的根目录>>>>>>>>\n\n回车结束"<<std::endl;
- exit(0);
- }
- check.close();
- check.setFileName(appPath+"/bin/qt.conf");
- check.open(QIODevice::ReadWrite|QIODevice::Text);
- check.resize(0);
- check.write("[Paths]\nPrefix=..");
- check.flush();
- check.close();
- QDir dir;
- QRegExp PRL("\\w:\\\\.*\\\\lib");
- PRL.setMinimal(true);
- QStringList filters;
- filters <<"*.prl";
- dir.setPath(appPath);
- dir.setNameFilters(filters);
- QDirIterator iter(dir,QDirIterator::Subdirectories);
- appPath.replace("/","\\\\");
- appPath.append("\\\\lib");
- while (iter.hasNext()){
- qDebug()<<"start";
- iter.next();
- QFileInfo info=iter.fileInfo();
- if (info.isFile()){
- QString filename = info.absoluteFilePath();
- QFile *file = new QFile(filename);
- file->open(QIODevice::ReadWrite|QIODevice::Text);
- QString read_data = file->readAll();
- read_data.replace(PRL,appPath);
- file->resize(0);
- char *ch;
- ch = read_data.toLatin1().data();
- file->write(ch);
- file->flush();
- file->close();
- }
- }
- qDebug()<<"SUCCESSFULL!";
- return a.exec();
- }
file_all.7z (759 K) 下载次数:14