Qt - Visual Studio - 在多台计算机上处理项目
Posted
技术标签:
【中文标题】Qt - Visual Studio - 在多台计算机上处理项目【英文标题】:Qt - Visual Studio - Work with projects on multiple computers 【发布时间】:2011-07-21 08:17:20 【问题描述】:我使用 Dropbox 在多台计算机(工作/家庭)上处理相同的 Visual Studio 项目,以在两者之间进行同步。因为 VS 会创建一些额外的大文件,所以我在上传到 Dropbox 之前删除了以下内容:
文件 = .pdb、sdf、.ilk .exe .tmp 文件夹 = ipch/、Release/、Debug/、GeneratedFiles/过去一切正常,但是现在出现了一些问题。 我收到以下错误:
Moc'ing CodeInterface.h...
1> The system cannot find the path specified.
1> Moc'ing ThreadWorker.h...
1> The system cannot find the path specified.
1> Rcc'ing StreamAnalyser.qrc...
1> The system cannot find the path specified.
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5): error MSB6006: "cmd.exe" exited with code 3.
所以,我想我可能必须创建一个新的 Visual Studio 项目并手动导入这些类。所以我的问题是:
在不同计算机上处理项目的最佳做法? 哪些文件可以删除(上传到 Dropbox)? Visual Studio 是否有某种“全局设置”(或类似于 Eclipse 使用的“工作区”)?如何设置这些设置以防止在不同计算机上工作时出现问题?谢谢!
【问题讨论】:
我在两台机器上都使用 Visual Studio 2010。 【参考方案1】:我不熟悉 Dropbox,所以我不能代表你目前所做的事情
我喜欢做的是使用分布式版本控制系统(我使用git
)来只看源代码。我使用.gitignore
文件来不版本任何目标代码和Visual Studio 项目文件等。然后,我可以轻松地将这些项目(及其版本控制)克隆到我喜欢的任何计算机上 - 包括我在火车上回家时可能会在笔记本电脑上闲逛的测试分支。
根据我的经验,Visual Studio 项目文件很痛苦,因为不同的版本不能很好地相互配合(一台计算机有 vs2005,另一台计算机有 vs2008)。为了克服这个问题,我喜欢使用cmake
作为我的构建系统(我也将它们包含在我的 git 存储库中)。 Cmake 是一个“元构建系统”,它为您生成 Visual Studio、Eclipse 或 autotools make 文件,然后您在 VS 或 Eclipse 中或使用 make 进行本机构建。
同时使用这两个包意味着您可以在任何计算机(包括 linux、mac 和 windows)之间复制正确版本控制的源代码,然后使用您在该计算机上安装的任何 IDE 在该计算机上本地构建源代码。
【讨论】:
我在连接到 QT 时遇到了同样的错误。您能否告诉我如何解决这个问题,因为我非常迫切地需要修复这个错误?我在这里发布了一个问题***.com/questions/15378407/…非常感谢汤姆【参考方案2】:“moc”是一个预处理.h
文件的Qt可执行文件。它由 MSVS 构建系统调用。但是,如果它丢失,您会得到“系统找不到指定的路径”。 “Moc'ing CodeInterface.h”后出错。
因此,我敢打赌,MSVS 找不到您的 Qt 实现。我并不完全感到惊讶。 Qt4 构建系统及其与 MSVS 的集成在我最近尝试安装它时并没有让我觉得它非常强大和可靠。
【讨论】:
【参考方案3】:我建议您使用 svn 和 anksvn。 Subversion 旨在管理在不同计算机上的工作,并具有版本控制的额外好处。
【讨论】:
【参考方案4】:在您的情况下,您可以删除文件但不能删除目录,即 GeneratedFiles\Debug
和 \Release
应该保留。如果您查看您的 h 文件,它们会执行 moc-ing 和 uic-ing 作为自定义构建步骤,并且该事件中没有路径检查代码。
"$(QTDIR)\bin\moc.exe" -DQT_NO_QT_INCLUDE_WARN -DUNICODE -DWIN32 -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_NETWORK_LIB -DJSBRIDGEAPI_LIB -D_WINDLL -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I".\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtNetwork\." -I"$(QTDIR)\include\QtWebKit\." ".\apisignalemitter.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_apisignalemitter.cpp"
所以 - 添加目录 .\GeneratedFiles\$(ConfigurationName)\
可能会解决您的问题。
另外,检查 $(QTDIR) 是否已定义。
UPD - 确保您在两台机器上的某个位置都安装了 QT
【讨论】:
【参考方案5】:我通常使用 SVN 进行版本控制,使用 qmake pro 文件进行项目设置。您可以使用 qmake 从 pro 文件创建 Visual Studio 项目文件并使用 Visual Studio,或者在 Windows、Linux 和 Mac 上创建 Makefile 和其他项目文件,因此它是一个非常便携的解决方案。
【讨论】:
以上是关于Qt - Visual Studio - 在多台计算机上处理项目的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 Visual Studio 项目的完整路径,以便可以在多台计算机上使用它?
[.net 面向对象程序设计深入]UML——在Visual Studio 2013/2015中设计UML类图
powershell 模板:使用PowerShell启动在Visual Studio中设计的.xaml文件(MainWindow.xaml)。它会自动删除a的属性