CMake - 构建没有首选 32 位标志的 C#

Posted

技术标签:

【中文标题】CMake - 构建没有首选 32 位标志的 C#【英文标题】:CMake - Building C# without Prefer 32-bit Flag 【发布时间】:2018-11-09 21:50:09 【问题描述】:

我有一个从 C++ 创建 DLL 的 CMake 项目和一个加载该 DLL 的 C# Windows 窗体可执行文件。

我使用 CMake 生成器:Visual Studio 15 2017 Win64

无论我做什么(一个例子是设置编译选项:/platform:anycpu),我都无法让 CMake 没有编译标志:/platform:anycpu32bitpreferred

当我在 VS2017 中打开生成的 VS 项目时,它在构建选项中设置了“Prefer 32-bit”标志。

有没有办法强制 CMake 生成我的 C# 项目而不设置此标志? 除非我使用 32 位 DLL,否则它会导致运行时链接问题。

【问题讨论】:

【参考方案1】:

这对我有用。在 cmake 3.14 上测试,但应该适用于 3.8.2 及更高版本。

set_property(TARGET $TARGET_NAME PROPERTY VS_GLOBAL_Prefer32Bit "false")

【讨论】:

【参考方案2】:

这个问题似乎是 CMake 中一个更大问题的一部分:https://gitlab.kitware.com/cmake/cmake/issues/17521

我找到了一个解决方法,就是在构建之前设置如下环境变量:

set Prefer32Bit=false

但是,缺点是这是为整个构建设置的,而不是为每个项目设置的。

【讨论】:

以上是关于CMake - 构建没有首选 32 位标志的 C#的主要内容,如果未能解决你的问题,请参考以下文章

“首选 32 位”编译器标志对 Visual Studio(C#、VB)意味着啥?

在 CMake 中为多个配置混合构建标志

使用 mingw-w64 和 cmake 构建 32 位和 64 位应用程序

CMake标志卡住了

使用 CMake 强制进行 32 位编译的正确方法

CMake:取决于构建类型的默认标志