1

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

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

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

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

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

4

2 回答 2

2

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

set_property(TARGET ${TARGET_NAME} PROPERTY VS_GLOBAL_Prefer32Bit "false")

于 2019-07-15T14:25:52.483 回答
0

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

我找到了一种解决方法,即在构建之前设置以下环境变量:

set Prefer32Bit=false

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

于 2018-06-08T00:56:43.367 回答