为Windows x86生成Cmake操作



我有一个Cmake/wxWidgets项目,它在我的电脑上构建得很好。我使用nmake /f makefile.vc BUILD=release TARGET_CPU=X86编译wxWidgets,并使用cmake .. -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CONFIGURATION_TYPES=Release生成CMake项目。

就像我写的那样,这在我的电脑上编译得很好。当我想在Windows 2019 Image上使用github操作构建它时,我首先提取wxWidgets,使用上面的语句编译它,使用aboce语句生成wxWidget,并使用包含"%programfiles(x86)%Microsoft Visual Studio2019EnterpriseMSBuildCurrentBinmsbuild.exe" ".buildNaCl-Configurator.sln" /p:Configuration=Release /p:Platform=Win32 /p:PlatformTarget=x86的cmd脚本触发构建

但当这样做的时候,我总是会得到以下错误:

wxmsw31u_core.lib(corelib_wincmn.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'x86' [D:aabcabcbuildabc.vcxproj]

如果我把所有东西都切换到x64,它编译得很好,但我需要一个x86版本。我缺少什么系统设置吗?

我使用另一个github操作访问nmake以构建wxWidgets。在这个操作中,我必须指定体系结构。所以使用

- name: Preparing nmake    
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x86
- name: start building wx widgtes
run: |
cd ${{ env.WXWIN }}${{ env.wxMSW_VER }}buildmsw
nmake /f makefile.vc BUILD=release TARGET_CPU=X86

然后继续就成功了。只有with: arch: x86缺少

这不是一个答案,这是一个建议。

但是,在花了几个小时研究你的问题之后,我真的在认真研究微软MSBuild的文档。

只要使用忍者。这是我们用来构建x64/x86二进制文件的。

您可能需要学习一些关于cmake工具链的知识,但至少您不必处理这些msbuild的废话。

忍者速度更快,与cmake配合效果更好,是一个非常小的可执行文件,等等。

在服务器上认真使用msbuild/visionstudio是不值得的。

我再次道歉,这不是对你问题的直接回答,如果你继续走这条路,我很想看看答案。

========================================

但我发现:

我会说,我对PlatformTarget和Platform之间的区别感到非常困惑。因为我生成的所有visual studio解决方案在任何地方都没有PlatformTarget作为属性。我扫描了生成的解决方案文件,但在任何地方都没有看到。当然我使用的是vs2019,所以我不知道它可能已经被弃用了。

更喜欢展开/p->属性,这对于您的构建服务器脚本来说是一种很好的做法。

也许可以尝试使用平台属性";x86";相反我真的找不到关于哪一个是首选/正确的具体信息。Win32/x86.

作为最后的猜测,请开始打印您的编译器和cmake的工具链信息。

资源:

如何指定MSBuild的平台?

https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-target-framework-and-target-platform?view=vs-2019年

我正在查看msbuild命令行,并查看我生成的visualstudio解决方案。

最新更新