Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 像使用经典的MAKEfile一样使用MSBUILD--如何做到这一点?_Qt_Msbuild_Makefile_Custom Build - Fatal编程技术网

Qt 像使用经典的MAKEfile一样使用MSBUILD--如何做到这一点?

Qt 像使用经典的MAKEfile一样使用MSBUILD--如何做到这一点?,qt,msbuild,makefile,custom-build,Qt,Msbuild,Makefile,Custom Build,我对VisualStudio项目/解决方案缺乏灵活性感到沮丧,但我意识到,现在它使用MSBUILD,它可能非常强大,但只是没有将其公开给IDE。所以我看了一下MSBUILD文档,不知道从哪里开始!我希望有一本简单的书。有什么好的教程可以给我指点吗 更具体地说,以下是我想做的事情: 运行实用程序预处理器来生成.cp和.h文件,然后由常规C++项目使用。在另一个项目中,作为文件使用的有多个输入(用于计算依赖项;具体来说,应该知道它使用的正常.h文件是否已更改)和多个输出(至少一个.cpp和一个.h文

我对VisualStudio项目/解决方案缺乏灵活性感到沮丧,但我意识到,现在它使用MSBUILD,它可能非常强大,但只是没有将其公开给IDE。所以我看了一下MSBUILD文档,不知道从哪里开始!我希望有一本简单的书。有什么好的教程可以给我指点吗

更具体地说,以下是我想做的事情:

运行实用程序预处理器来生成.cp和.h文件,然后由常规C++项目使用。在另一个项目中,作为文件使用的有多个输入(用于计算依赖项;具体来说,应该知道它使用的正常.h文件是否已更改)和多个输出(至少一个.cpp和一个.h文件)

WiWW,最复杂的情况涉及在“正常”C++项目中使用Qt,它可以直接使用服务器上的脚本使用VS Express 2010或MSBuw构建。既然这是一个公共图书馆,可能会有一些指南或其他帮助?请注意,VS插件对于构建阶段没有用处,但可以用于最初生成项目文件,然后仅依赖于MSBUILD和源代码中包含的内容

谁能给我指一下正确的方向吗

--约翰


情况会变得更糟,但这是我的第一个目标。

我在布赖恩·克雷茨勒的一本书中找到了我想要的信息

在前18页中,我找到了一些关键信息,这些信息与我已经阅读过的在线文档一起,足以帮助我理清思路,尝试解决我的项目。感兴趣的详细信息包括MSBuild如何读取文件中的内容并对其进行操作的处理顺序、项目中的通配符何时展开以及如何处理生成的文件的快速要点,以及如何查看在某些实际情况下发生的情况,甚至在调试器中执行的步骤


FWIW,我成功地解决了我的问题,没有使用我尚未理解的模糊的“.targets”/规则文件,而是使用了更好的文档化/示例化功能(特别是,具有通配符项的目标不关心文件扩展名是否在任何“.Target”中);非常简单,可以从示例中复制,并允许在IDE项目中查看文件并使用IDE添加到列表中;同样,那里的文件扩展名正常。)

Visual Studio项目采用MsBuild脚本格式,Visual Studio解决方案在生成时转换为MsBuild脚本格式(在对.SLN运行msBuild之前,请将MSBUILDEMITSOLUTION设置为1),因此学习MsBuild将是有利的。我建议您使用以下内容预处理您的VC++项目:MsBuild.exe MyProject.vcxproj>ppout.xml打开ppout.xml,然后识别并检查在构建期间包含在项目中的.targets和.props文件,看看您是否能够了解幕后发生的情况。了解调用MsBuild正是我要做的。信息稀缺:我获得了task/item/target的基本知识,但在整个逻辑循环中,它并没有为这些声明赋予任何意义,而.targets的内容是一个泥潭。您需要从Microsoft站点开始,然后从那里开始。在没有这些知识的情况下挖掘现有的构建系统dge是一种挫败自己、重塑方向盘的好方法:)我想说,从这样的事情开始: