抱歉,有很多类似的问题,但我确实发现谷歌搜索 CMake 查询总是会产生类似但不一样的场景、冲突的 CMake 命令等等!
我需要强制我的项目构建 32 位二进制文件,因为我必须链接一个只能作为 32 位使用的库。我根据错误消息进行了诊断,例如:
/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
因此,根据我收集的信息,我应该使用:
set (CMAKE_CXX_FLAGS "-m32")
这确实改变了一些事情 - 我现在收到几个错误,例如:
/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
并且仍然会为外部库获得相同的错误。我 认为 这是因为 -m32
使 gcc 生成 32 位二进制文件,但 ld 仍在尝试 64 位输出?进一步谷歌搜索这个问题并没有取得任何成功,所以如果有人能验证我是正确的并给出正确的方法,我将非常感激!
非常感谢!
原文由 devrobf 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用了malat的方法并制作了一个工具链文件。
我有一个适用于某些 Linux 发行版的工具链文件,也许它会给你灵感。它可能按原样为您工作,或者您可能需要其他丑陋的黑客来获取您依赖的其他 cmake 脚本或 w/e:
https://github.com/visualboyadvance-m/visualboyadvance-m/blob/master/cmake/Toolchain-cross-m32.cmake