【发布时间】:2019-05-02 18:31:37
【问题描述】:
我正在尝试在Visual Studio 中编译我的C++ CMake 项目。但是,我收到以下错误消息:
#error: "No Target Architecture" C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winnt.h 154
我检查了我的代码,我从不包括 winnt.h,但我包括 windows.h so this rules out the solution of never including winnt.h。
这是引发错误的winnt.h代码sn-p:
//
// TODO: WOWXX - Unblock ARM. Make all alignment checks DWORD for now.
//
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif !defined(RC_INVOKED)
#error "No Target Architecture"
#endif
我之前在Visual Studio 之外使用MinGW 和WSL (Windows Subsystem for Linux) 成功编译了这个项目。我如何告诉Visual Studio 我的架构是64-bit 和amd64 (?)。除了使其编译之外还需要什么?运行配置设置为x64-Debug。包含stdafx.h 是不可能的,因为找不到头文件。我也在使用Boost,但可以通过将以下行添加到我的CMakeLists.txt 来正确解决:
set(BOOST_ROOT "C:/local/boost_1_69_0_b1_rc3")
【问题讨论】:
-
您当前的 CMake 命令是什么?你在使用
cmake -G "Visual Studio 15 2017 Win64" ..吗? -
@Chris:我使用
Visual Studio构建函数。使用诊断输出,我得到了以下构建命令:"C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\CMake.exe" --build "C:\Users\User\CMakeBuilds\9da55f70-6c9e-9f39-9d9d-49fcd309f582\build\x64-Debug" --target MyProject --config Debug -- "-v" -
是的,您仍在使用我提到的
cmake命令,您的输出似乎没有将生成器-G "Visual Studio 15 2017"设置为win64。我不熟悉Visual Studio构建功能是什么。您是否看到任何允许您将解决方案平台切换到 64 位的设置? -
--target MyProject似乎有点奇怪,为了确定,您确实定义了一个名为“MyProject”的特定目标,对吧?
标签: c++ visual-studio visual-c++ cmake