【发布时间】:2022-01-14 05:59:46
【问题描述】:
我正在尝试使用 cmake/msbuild 在 Windows Server 2019 上构建 32 位 fmt(我没有完整的 Visual Studio GUI,我只有命令行构建工具)。我收到此错误:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(408,5): 错误 MSB8013:此项目不包含配置和 Debug|Win32的平台组合。
它可以构建为 64 位,但这不是我需要的。我认为这是因为 fmt 生成的构建文件没有针对 32 位 Windows 的配置(我认为 Debug 位并不重要,它也不适用于 Release 配置)。
按照 fmt 说明,我在 build 子目录中执行此操作:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_C_FLAGS=-m32 -DCMAKE_GENERATOR_PLATFORM=x86 ..
cmake --build . --config Release
cmake --install . --prefix <fmtlib_target_dir> --config Release
有没有办法在 Windows 上将 fmt 构建为 32 位?
【问题讨论】:
-
可能是 CMake 只是选择了 64 位编译器,因此创建了一个针对该编译器的项目。整个过程如何启动,CMake运行的环境是什么?使用“x86 Native Tools 命令提示符”还是 64 位版本? (见docs.microsoft.com/en-us/cpp/build/…)
-
我只是在使用常规命令提示符并自己调用 vcvarsall.bat。我不知道那里有那些不同的命令提示符,但看起来基本上做同样的事情。无论如何,这是一个好主意(谢谢),但它会导致同样的问题!
-
您是否为 CMake 指定了 32 位生成器?请参阅github.com/fmtlib/fmt/blob/master/support/appveyor-build.py,我认为应该正确构建
-
有效!谢谢!我需要将
-G "Visual Studio 16 2019" -A Win32添加到我的 cmake 命令中。非常感谢,如果您将其发布为答案,我会将其标记为已接受。 :-)