针对每个解决方案启用/禁用 Visual Studio Qt 插件

问题描述 投票:0回答:1

我正在使用 Visual Studio 2008 处理两个客户项目,其中一个使用 Digia 的 Qt 插件引入的 $(QTDIR) 定义。

安装插件后,我无法构建任何不使用 Qt 插件的解决方案,因为“没有为此项目设置 Qt 版本”。

有没有办法禁用每个解决方案的 Qt 插件,这样它就不会干扰非 Qt 项目中的构建过程?

visual-studio qt visual-studio-2008
1个回答
0
投票

好吧,我来晚了一点,但我正在更旧的系统上使用旧软件。所以我今天遇到了这个问题。 我认为“停用”不是真正的问题(如果您不需要它,就不要使用它)。但是 QtAddIn 以其非常 NonDRY 不可读的声明搞乱了
.vcxproj

 & Co。

对我来说它起作用了在我转动了 <Keyword>Qt4VSv1.0</Keyword>
 中的 
.vcxproj
 文件返回

<Keyword>Win32Proj</Keyword>
.
QtAddIn 仍然已安装并处于活动状态,但现在它不再修改您的项目文件。

PRO:您可以遵循自己的约定,并且可以以非常紧凑的形式进行描述。例如:

<ItemGroup Label="my_widget"> <ClCompile Include="src\my_widget.cpp" /> <CustomBuild Include="src\my_widget.hpp"> <AdditionalInputs>$(QtMoc_exe);%(FullPath)</AdditionalInputs> <Message>Moc%27ing %(Identity) ..</Message> <Outputs>.\qtgen\%(Filename)-moc.cpp</Outputs> <Command>"$(QtMoc_exe)" "%(FullPath)" -o ".\qtgen\%(Filename)-moc.cpp" $(QtMoc_flags)</Command> </CustomBuild> <CustomBuild Include="src\my_widget.ui"> <AdditionalInputs>$(QtUic_exe);%(AdditionalInputs)</AdditionalInputs> <Message>Uic%27ing %(Identity)...</Message> <Outputs>.\qtgen\%(Filename)-ui.h;%(Outputs)</Outputs> <Command>"$(QtUic_exe)" -o ".\qtgen\%(Filename)-ui.h" "%(FullPath)"</Command> </CustomBuild> <ClInclude Include="qtgen\my_widget-ui.h" /> <ClCompile Include="qtgen\my_widget-moc.cpp" /> </ItemGroup>

CON:您必须自己执行此操作,或者让 CMAKE 或其他工具 为您生成此代码。

注意:使用像*.moc.cpp

这样的扩展(而不是
*-moc.cpp
)
你可以让 
*.vcxproj.filters
 使用模式 - 而不是
单独列出每个文件。

注意:(产品)使用重复的文件名时要小心(例如 src/my_widget.cpp
qtgen/mocs/my_widget.cpp
这会导致两个目标文件具有相同的名称。 使用
<ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
 和/或
只是不要这样做。

© www.soinside.com 2019 - 2024. All rights reserved.