我目前正在将一个gcc项目移植到Visual C++.它是在CMake文件中定义的,我创建了一个Visual C++属性表以帮助兼容(GccCompat.props).每次Visual C++项目文件由CMake重新生成时,必须手动添加属性表,因为我不知道如何自动添加它.所以,问题是:
如何告诉CMake向生成的Visual C++解决方案添加属性表?
假设我在首次安装和打开Microsoft Visual Studio 2010后立即执行以下步骤:
File
- > New
- > Project
- > Win32 Console App
- > Finish
.
转到Property Manager
窗格 - >展开Debug | Win32
- >右键单击Microsoft.Cpp.Win32.user
- >选择Properties
.
以一种无知的方式疯狂地改变设置,并且通常表现得像个傻瓜.
单击Apply
,保存项目,然后关闭Visual Studio.
如何将Microsoft.Cpp.Win32.user
属性表恢复为默认的"工厂"设置?
msbuild visual-studio-2010 propertysheet visual-studio msbuild-4.0
我正在开发一个应用程序,它恰好是我正在开发的安装程序的引导程序.该应用程序进行一些MSI调用,以获取将我的应用程序主窗口向导组合在一起所需的信息,这会导致在收集信息时打开进度窗口,然后在完成后立即离开.然后设置并启动向导.我的问题是,向导(从CPropertySheet派生)不希望在没有我添加一些调用的情况下来到前面并成为活动应用程序.
我已经解决了在OnInitDialog()方法中使用以下代码将它带到前面的问题:
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // force window to top
SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // lose the topmost status that the previous line gave us
Run Code Online (Sandbox Code Playgroud)
我的问题是,我仍然没有弄清楚如何使窗口自动激活(即,使自己成为具有焦点的窗口).SetFocus()在此上下文中不起作用.我需要一些东西来强制窗口到Z顺序的顶部并激活它,最好是尽可能少的调用.
我的猜测是MSI调用开始时打开的进度窗口导致主窗口搞砸了,但我无法阻止该窗口出现.此外,隐藏它是没有意义的,因为它让用户知道在主窗口到达之前发生了什么.
在 Visual Studio 2010 中,我创建了几个“项目属性表”并将其添加到项目的属性中。有什么方法可以指向或单击属性页面之一并找出我的硬盘驱动器上保存相应项目属性文件(扩展名为 .props 的文件)的位置吗?
该<PlatformToolset/>
物业不会通过项目属性表公开.这很不幸,因为如果要升级编译器(在我的情况下为VS 2013),我必须通过几个解决方案来运行几个解决方案来改变这个值.
我可以编写一个脚本或一个小程序,可以打开vcxproj文件,将它们视为xml并在所有战略位置插入此属性,但这对我来说似乎有点疯狂.
这里推荐的方法是什么?
我有一组属性表,它们定义了我的c ++项目中常用的第3部分库的包含和链接路径.有没有办法在可执行文件中定义PATH,以便在我在调试器中启动它时找到二进制文件?
编辑:我注意到如果我将以下内容添加到属性表(通过记事本)
<PropertyGroup>
<VCRedistPaths>c:\path\bin\$(Platform);$(VCRedistPaths)</VCRedistPaths>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
然后我在调试器下运行app时得到c:\ path\bin\Win32(例如)路径,但问题是visual studio没有立即检测到我的更改(如果我更改属性表中的路径或附加另一个属性表与另一个路径),我必须重新启动visual studio以获取拾取的更改.谁知道这是否可以避免?
我正在编写一个 Visual Studio 2010 属性表来集成一个复杂的 3rd 方 C++ 库。
要确定我需要链接到我的项目的库的哪些部分(以及配置各种定义、包含、目录等),我的属性表需要确定项目当前配置的 C 运行时库(即“MultiThreaded”、“ MultiThreadedDebug”、“MultiThreadedDLL”或“MultiThreadedDebugDLL”)。
但是,正如stackoverflow 上的一个基本类似的问题所指出的,这个 MSBuild 条件不起作用:
Condition = " '$(RuntimeLibrary)' == 'MultiThreadedDLL' "
Run Code Online (Sandbox Code Playgroud)
提供了另一个选项,但它用于后续构建任务。在进行构建之前,我需要这个值。
我还搜索了 Google 和 Microsoft 的 MSDN 网站,寻找获得此值的方法,但结果为空。有任何想法吗?
有没有办法重新加载在 Visual Studio 之外编辑的属性表?Visual Studio 不会自动检测到文件已被修改(就像对待项目文件一样)。到目前为止,我发现的唯一方法是关闭并重新打开整个解决方案(但这不是好方法)。
我遇到了Visual Studio 2012的问题,我希望有一个解决方案.我在我的解决方案中有2个项目:1个项目是".exe"项目,另一个是".lib"项目.我已经在lib项目中添加了lib项目作为参考,并且我确保它被安排首先编译.lib项目有一堆额外的include目录和一堆额外的依赖项和链接库.lib项目编译得很好.但是,exe应用程序不会继承任何其他包含目录或其他库目录或依赖项.我能够通过将配置复制到exe项目来解决这个问题,但这意味着如果我更新了lib依赖项,那么我需要在每个使用该库的项目中更新它(我玩这个库用于多个项目).这似乎应该有一个解决方案,但我似乎无法找到它.有没有人想出让项目继承引用项目的配置的方法,或者没有办法解决这个问题?谢谢.
ide propertysheet visual-studio visual-c++ visual-studio-2012
我正在使用Visual Studio 2010 SP1.我注意到我可以向项目添加属性表,但我无法更改这些属性表中的字符集.我创建的任何属性表都缺少"字符集"选项.
任何人都可以解释为什么我不能使用属性表设置字符集?是否有一些禁止使用属性表无法设置的禁用属性列表?
谢谢
所以,我在VS2017有一个项目,VS2017最近收到了更新。然后,我将所有 wxWidgets 模块作为项目添加到我的初始解决方案中,并处理了构建顺序,因此它们以正确的顺序构建。
但是,我总是收到此错误:
C:\Programs\Visual Studio 2017\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props(144,5): warning
MSB4211: The property "WindowsTargetPlatformVersion" is being set to a value for the first time, but it was already consumed at
"C:\Programs\Visual Studio 2017\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.props (29,5)".
Run Code Online (Sandbox Code Playgroud)
但它没有告诉我如何修复它。据我所知,单个项目的属性没有按照应评估的顺序进行评估。
如何定义属性表排序?我到底需要改变什么?
也不是我不能更改项目文件或任何连接到 wxWidgets 的东西,因为它是我存储库中的一个子模块,并且所做的任何更改都无法保存到存储库中。
PATH
要从属性表在项目中进行本地定义,我需要将其添加到LocalDebuggerEnvironment
.
当只有 1 个定义 的属性表时,此方法效果很好PATH
。
如果我有多个属性表,虽然我想使用PATH
每个属性表,但
Visual Studio 将仅考虑我包含的最后一个PATH
属性表。
如果我创建属性表B1.props
:-
<PropertyGroup Label="UserMacros"><LocalDebuggerEnvironment>
PATH=SOMEPATH1;%PATH%
</LocalDebuggerEnvironment></PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
,属性表B2.props
:-
<PropertyGroup Label="UserMacros"><LocalDebuggerEnvironment>
PATH=SOMEPATH2;%PATH% <!-- different only this line -->
</LocalDebuggerEnvironment></PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
,属性表C.props
(=包括B1.props
& B2.props
):-
<ImportGroup Label="PropertySheets">
<Import Project="B1.props" />
<Import Project="B2.props" />
</ImportGroup>
Run Code Online (Sandbox Code Playgroud)
,并设置要使用的 Visual Studio 项目C.props
,我会得到结果:PATH=SOMEPATH2;%PATH%
。
如何使 Visual Studio 使用路径求和,例如
...,同时保持良好的属性表模块化?PATH=SOMEPATH2;
SOMEPATH1
;%PATH%
c++ environment-variables propertysheet visual-studio visual-studio-2019
propertysheet ×12
visual-c++ ×5
c++ ×3
msbuild ×3
cmake ×1
envdte ×1
ide ×1
mfc ×1
msbuild-4.0 ×1
path ×1
properties ×1
windows ×1
wxwidgets ×1