- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
序言:我正在尝试将我的 C# csproj 与我们的 C++ 和 C++/CLI 代码库 cmake 构建的其余部分集成。我收到了反对尝试这样做的建议,因为 CMake 与 Visual Studio 中的 .NET 不能很好地协作,但在实现一些自定义之后,我觉得我已经非常接近了。
我的自定义部分是使用configure_file命令在CMake时编辑csproj文件,根据正在发生的构建类型(例如x86、x64)对其进行自定义。
问题是我使用一些 ProjectReference 标签来引用 C++/CLI 项目:
<ProjectReference Include="..\..\WrapperProject\WrapperProject.vcproj">
<Project>{7BD6E175-CDD1-4F8D-A3B2-0AC862E62C03}</Project>
<Name>WrapperProject</Name>
</ProjectReference>
...并且 GUID 不能保持静态,因为每当重建 CMake 缓存时,它们都会针对项目发生变化(如果我弄错了,请纠正我)。
所以我想做的是在 CMake 时找到为这些项目计划的 GUID,并相应地编辑 vcproj 文件。
Google 告诉我,人们可以使用“set_property”来设置 GUID,如下所示:
set_property(CACHE ${target_name}_GUID_CMAKE PROPERTY VALUE ${MY_GUID} )
...但我似乎找不到等效的 setter/getter 。我尝试过这样的事情:
get_property(WRAPPER_GUID 缓存内部属性 WrapperTargetName_GUID_CMAKE)
...没有运气。感谢您的帮助!
最佳答案
经过更多尝试后,我意识到 Fraser 指出的 - 这种方法并不总是有效,因为我不能指望 GUID 在新运行的 CMake 上可用。因此,我采用了 CMake 邮件列表中建议的路线,即自己显式设置 GUID 值。
因此,在每个 C++/CLI 包装器项目的 CMakeLists.txt 中,我有这样的内容:
# Set a global cache variable for this project GUID
# The TestAppNet csproj needs this GUID to properly reference this project
set_property(GLOBAL PROPERTY Wrapper_GUID "1897F4D1-E929-444E-9343-00F094113772")
get_property(projectGUID GLOBAL PROPERTY Wrapper_GUID)
MESSAGE( STATUS "Setting project GUID to: ${projectGUID}")
set(Wrapper_GUID_CMAKE "${projectGUID}" CACHE INTERNAL "Project GUID")
在 C# 项目 CMakeLists.txt 中,我有以下内容:
get_property(CMAKE_WRAPPER_GUID GLOBAL PROPERTY Wrapper_GUID)
MESSAGE( STATUS "Setting Wrapper GUID to: ${CMAKE_WRAPPER_GUID}" )
...然后 CMAKE_WRAPPER_GUID 用作 .csproj 文件中的变量,该文件在 configure_file 命令期间填充。
我不确定这是否有效,但它似乎有效!
关于cmake - 我可以在 cmake 时获取 CMake 为特定 vcproj 生成的 GUID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415007/
我正在使用 Visual Studio 2008。我有一个 Visual C 项目“new.vcproj”。需要进行一些更改,以便它利用来自另一个 Visual C 项目“old.vcproj”的类方
在我的vcproj文件中 什么是.\Release 它是某种宏吗?它在什么设置中显示?怎么设置他? 最佳答案 这看起来像是一个非常旧的 VC++ 版本,但您没有指定是哪个版本。 (不是这样)新的 M
我有一个需要第三方库(开源)的解决方案文件。包含的解决方案使用“Debug”和“Release”的典型配置名称。 第三方有DLL和静态库的debug和release配置——它们的名字不是“Debug”
我们有几个 Visual Studio 项目,我们想: 启用/禁用一些项目的一些定义 添加/删除包含路径 更改库的输出目录(库依赖项) 简而言之,我们希望能够支持上述所有内容,而无需在解决方案文件中进
我在 MSDN 上看了,没找到。 我找到了一个 XML Schema for the .vcproj file ,这很好。 但我真正想要的是对 vcproj 文件中每个元素的解释,一个引用。 摆在我面
有没有办法在项目文件(有或没有 vsprops)中进行环境变量替换,如果找不到变量,则用默认值替换?我还没有找到任何方法来做到这一点,因为一切似乎都覆盖了环境变量。 编辑:我需要它为属性工作,而不是为
我们使用 Subversion 作为我们的源代码控制系统,并将 VisualStudio 项目文件 (vcproj) 存储在源代码控制系统中,我认为这是正常的。在 Subversion 中,我们不使用
我在网上搜索了一些不错的代码,突然间我碰到了一个,但是它已经在 Eclipse 中工作了,因为我没有 Eclipse(而且我也不打算安装它)我可以在我的 VS10 上正确编译它。问题是所有链接器引用都
我有一个 visual c++ 项目文件 (vcproj),我想以编程方式修改它以添加额外的包含目录或链接库。 一种解决方案是将 vcproj 解析为 XML 文件并对其进行修改。有任何其他 API
我想编写一个程序或脚本来为我生成 .vcproj 和 .sln 文件。我目前有很多设置/配置需要为我创建的每个 .vcproj 设置,我看到人们能够以某种方式生成这些文件,尽管我无法通过 msdn 或
我有一个为 Visual Studio 2005 生成 .sln 文件和一些 .vcproj 文件的脚本。我需要设置 WorkingDirectory 选项,但它在 .user 文件中指定。我们目前无
我在 c:\test 文件夹中有 main.cpp 并执行以下操作: qmake -project qmake -tp vc test.pro 答案是: WARNING: Unable to gene
Visual Studio 的 vcproj 文件包含影响构建的各种设置或属性。例如,我试图转换为 cmake 的项目使用的一些是 StringPooling="true" RuntimeLibrar
我知道如果我安装 Visual Studio 2005 或 2008,将安装 msbuild。 我知道如果我安装 .NET Framework SDK,也会安装 msbuild。 As of .NET
Microsoft Visual Studio 使用 XML 来保存其 .vcproj项目文件。所以区分 XML 项目文件应该很容易。 不幸的是,如果您更改了项目文件的任何属性,Visual Stud
我的项目只提供 nmake 文件,我喜欢将项目加载到 Visual Studio Express 9,如何将 nmake 转换为可用的 vcproj 文件? 最佳答案 从现有代码创建 Visual S
我知道,问题有already been asked但答案不符合我的要求。 那么有什么方法可以在 Eclipse CDT 中导入带有所有参数的 Visual Studio 项目吗?如果是,我该怎么做?
内部.vcproj files您的项目中有一个所有源文件的列表。 我们如何使用宏来指定源文件的路径?如果我们这样做: 编译器找不到文件夹: qmfcapp.cpp c1xx : fatal err
合并项目/解决方案文件是开发人员/SCM 管理员在其源代码控制中执行合并的众所周知的灾难。 以一个常见的场景为例:开发是在两个不同分支的项目/解决方案上完成的。当需要合并回主要开发线时,VCPROJ(
我是 Visual Studio 世界的新手。有人可以解释一下这两个文件包含的内容吗?我知道其中一个包含有关项目的信息,但另一个呢? 最佳答案 一个项目文件 .vcproj / .vcxproj包含有
我是一名优秀的程序员,十分优秀!