CMake - 构建C#而不喜欢32位标记

时间:2018-05-30 23:59:03

标签: c# cmake anycpu

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

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

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

当我在VS2017中打开生成的VS项目时,它有"首选32位"标记在构建选项中设置。

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

2 个答案:

答案 0 :(得分:1)

这对我有用。在cmake 3.14上进行了测试,但应在3.8.2及更高版本上正常工作。

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

答案 1 :(得分:0)

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

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

set Prefer32Bit=false

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