【发布时间】:2016-08-08 05:41:01
【问题描述】:
我有一个基于 makefile 的项目,我编写了一个实用程序来生成 VS 2015 项目文件并将它们连接到 makefile 命令,这样我就可以两全其美了。
不幸的是,我遇到了 Visual Studio 似乎不允许自定义平台名称的问题。例如,如果我的 makefile 定义了两个平台,“Win32”和“Win64”,在尝试在 VS 中构建项目(这只是进行命令行调用)时,我会收到以下错误:
错误 MSB8006 项目“codegen.vcxproj”的平台无效。平台='win64'。如果其他项目试图遵循对此项目的项目到项目引用,此项目已卸载或未包含在解决方案中,并且引用项目未使用相同或等效项构建,则也可能出现此错误平台。
如果我将 win64 重命名为 x64,那么它可以正常工作,因为这是 Visual Studio 识别的平台,但这并不能解决根本问题,即我不想仅限于 Visual Studio 知道的平台的。我不明白为什么这对 makefile 项目来说甚至是一个问题,因为我没有在 Visual Studio 中调用编译器。有谁知道如何欺骗 Visual Studio 接受 makefile 项目无法识别的平台?
编辑:我可以通过使我的所有配置采用 _ 形式来解决这个问题,并且只使用 x64 之类的占位符作为实际平台字段,但我仍然有兴趣了解是否有真正的解决方案。
【问题讨论】:
-
你的平台被命名为'Win64',所以它很可能是'x64',那你为什么要使用非标准名称来混淆VS和其他人呢?
-
我可以将其更改为 x64 并避免这种特定情况,但如果我想在将来添加另一个平台(例如 ps4),那么我会遇到同样的问题。
-
让 IDE 构建程序时,平台名称很重要。它需要选择正确的编译器和链接器来生成正确的可执行文件。所以这个名字不是随意的,你只能选择它所知道的。在大多数机器上是 Win32、x64 和 ARM。当您使用 makefile 项目时,这不再重要,因为现在是 makefile 决定了您使用的编译器/链接器。但是您仍然必须选择一个有效的平台名称。配置名称(默认为 Debug 和 Release)可以是您想要的任何名称。
-
有道理。太糟糕了,即使使用 makefile 项目也会强制执行,我不明白为什么有必要这样做。但无论如何,我可以通过将所有配置转换为配置和平台的组合来解决它。
标签: c++ visual-studio platform